LoginSignup
3
4

More than 5 years have passed since last update.

kotlinでandroid入門 メニュー

Posted at

今回はメニュー : Toolbar & onCreateOptionsMenu

menu1.png

タイトルバー : Toolbar

  1. 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>
  1. 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" />
  1. ツールバーをアクションバーとしてセット
    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

  1. 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>
  1. オプションメニューの表示
    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
    }

  2. メニュー選択時の処理

    // メニュー選択された時の処理
    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)
            }
        }
    }
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4