今回はメニュー : Toolbar & onCreateOptionsMenu
タイトルバー : Toolbar
- mian/res/styles.xml の DarkActionBar を NoActionBar に変更してタイトルバーを消す
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
- xml に android.support.v7.widget.Toolbar
<!-- ツールバー -->
<android.support.v7.widget.Toolbar
android:id="@+id/main_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
app:title="Title"
android:minHeight="?attr/actionBarSize" />
- ツールバーをアクションバーとしてセット
setSupportActionBar(main_toolbar)
main_toolbar.setTitle(R.string.main_title)
main_toolbar.setTitleTextColor(Color.WHITE)
main_toolbar.setSubtitle(R.string.sub_title)
main_toolbar.setSubtitleTextColor(Color.WHITE)
オプションメニュー : onCreateOptionsMenu
- menu の xml 作成
例) menu.xml として
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings0"
android:title="@string/menu_msg0"
app:showAsAction="never" />
<item
android:id="@+id/action_settings1"
android:title="@string/menu_msg1"
app:showAsAction="never" />
<item
android:id="@+id/action_settings2"
android:title="@string/menu_msg2"
app:showAsAction="never" />
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
android:title="@string/search"
app:showAsAction="always" />
<item
android:id="@+id/action_add"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/add"
app:showAsAction="always" />
</menu>
- オプションメニューの表示
onCreate() の外
// オプションメニューを作成する
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
//
getMenuInflater().inflate(R.menu.main_manu, mmenu)
// オプションメニュー表示する場合はtrue
return true
}
// ここでメニュー項目を表示前に調整できる
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
super.onPrepareOptionsMenu(menu)
menu.findItem(R.id.action_settings0).setVisible(false)
menu.findItem(R.id.action_settings3).setTitle(R.string.menu_msg3X)
menu.findItem(R.id.action_add).setVisible(false)
return true
}
- メニュー選択時の処理
// メニュー選択された時の処理
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_settings1 -> {
tmpLowDisp(item.title.toString())
true
}
R.id.action_settings2 -> {
tmpLowDisp(item.title.toString())
true
}
R.id.action_settings3 -> {
tmpLowDisp(item.title.toString())
true
}
R.id.action_search -> {
tmpLowDisp(item.title.toString())
true
}
else -> {
super.onOptionsItemSelected(item)
}
}
}