9. オーバーフローメニュー

Kotlin

オーバーフローメニューとは

アクションバーに表示されるハンバーガーメニューのこと

res/values/strings.xml

<resources>
    <string name="app_name">myapp</string>
    <string name="setting">設定</string>
    <string name="about">このサイトについて</string>
</resources>

res/menu/overflow_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/menuListOptionTeishoku"      
        android:title="@string/setting"
        android:icon="@drawable/ic_settings"
        app:showAsAction="never" />
    <item
        android:id="@+id/menuListOptionCurry"
        android:title="@string/about"
        android:icon="@drawable/ic_info"
        app:showAsAction="never" />
</menu>

app:showAsActionはアクションバーに表示させるかどうかの設定

neveritemがオーバーフローメニューに格納される
always常にアクションバーに表示される
ifRoomアクションバーに表示する余裕があるときは表示し、ないときはオーバーフローメニューに格納する

kotlin+java/com.example.myapp/MainActivity.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    // メニューの作成
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater:inflate(R.menu.overflow_menu, menu)
        return true
    }

    // メニュー項目が選択されたときの処理
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        var returnVal = true
        when(item.itemId) {
            R.id.setting ->
                Toast.makeText(this, "settingがクリックされました", Toast.LENGTH_LONG).show()
            R.id.about ->
                Toast.makeText(this, "aboutがクリックされました", Toast.LENGTH_LONG).show()
            else ->
                super.onOptionsItenSelected(item)
        }
        return returnVal
    }

}

menuInflater:inflate(R.menu.xxxx)はxmlに記述されたメニュー部品をJavaオブジェクトにふくらませる関数。

BACK