9. オーバーフローメニュー
オーバーフローメニューとは
アクションバーに表示されるハンバーガーメニューのこと
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はアクションバーに表示させるかどうかの設定
never | itemがオーバーフローメニューに格納される |
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