この記事の内容を実践すると下図のように、ツールバー上にもどるボタンを表示し、
もどるボタンを押すことで処理を実行させることが可能となります。
(※下図の例ではもどるボタン押下でアプリ終了としています)
ツールバーを表示するまで
ツールバーを表示するまでについては以下の記事を参照ください。戻るボタンを表示する
戻るボタンを表示するには、setDisplayShowHomeEnabledを引数trueで実行します。また、戻るボタンを押したときに処理をさせるときは、setDisplayHomeAsUpEnabledを引数trueで実行します。
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.tb);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("ツールバータイトル");
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
実行すると以下のようになります。
戻るボタンの色を変える
上図を見ると、戻るボタンの色とツールバーのタイトル色が異なっています。色を揃える方法を紹介します。
戻るボタンの色を変えるには、ツールバーのテーマのtextColorSecondaryの設定値を変更します。
res/values/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="ToolbarTheme" parent="Theme.AppCompat.Light">
<item name="android:background">#FF0000</item>
<item name="android:textColorPrimary">#FFFFFF</item>
<item name="android:textColorSecondary">#FFFFFF</item>
</style>
</resources>
この状態でアプリを起動すると、以下のようになり、色を揃えることができました。
戻るボタンの処理を実装する
ここまでで戻るボタンを表示してボタンを押せるようになってはいますが、まだ、戻るボタンを押したときの処理が実装されていません。戻るボタンの処理を実装するにはonSupportNavigateUpをオーバライドします。
ここでは例として、ボタンを押したときにアクティビティを終了するコードを実装します。
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.tb);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("ツールバータイトル");
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onSupportNavigateUp() {
finish();
return super.onSupportNavigateUp();
}
}
この状態でアプリを起動し、ツールバーの戻るボタンを押すとアクティビティが終了する処理が実行されるはずです。
