ก๊วนซอฟท์แวร์ </softganz> SoftGang (Gang Software)

Web &amp; Software Developer Gang.

สร้างปุ่มเมนูบน Action Bar ของ Template Buttom Navigator Activity

by Little Bear @30 ก.ย. 63 11:18 ( IP : 14...62 ) | Tags : Android App

ตอนที่เริ่มสร้าง App ใหม่ โดยใช้ Template Buttom Navigator Activity นั้นจะไม่มีปุ่มเมนูบนด้านขวาของ Action Bar หากเราต้องการใช้ ก็จำเป็นต้องสร้างขึ้นมาเอง

เริ่มด้วยการสร้าง resource file ของ options menu ก่อน

Menu -> New -> Resource File File name : options_menu Resource type : Menu

options_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/searchFragment"
    android:icon="@drawable/ic_baseline_search_24"
    android:title="@string/action_search"
    app:showAsAction="always" />
<item
    android:id="@+id/settingsFragment"
    android:icon="@drawable/ic_baseline_settings_24"
    android:title="@string/action_settings"
    app:iconTint="@color/yourcolor"
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/aboutUsFragment"
    android:icon="@drawable/ic_baseline_info_24"
    android:title="@string/action_aboutus" />
</menu>

MainActivity.kt

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    val inflater = menuInflater
    inflater.inflate(R.menu.options_menu, menu)
    if (menu is MenuBuilder) {
        menu.setOptionalIconsVisible(true)
    }
    return super.onCreateOptionsMenu(menu)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {
        R.id.aboutUsFragment -> {
            toast("About Us")
        }
    }
    return super.onOptionsItemSelected(item)
}

เพิ่มรายการในเมนู

menu?.apply {
// ----------------- add a new item to menu ----------------
// add new item to menu
val newItem:MenuItem = menu.add(
    Menu.NONE, // group id
    2, // item id
    1, // order
    "New Item" // title
)

// set new item's icon
newItem.setIcon(R.drawable.ic_check_circle)

// set new item show as action flags
newItem.setShowAsActionFlags(
    MenuItem.SHOW_AS_ACTION_ALWAYS or
    MenuItem.SHOW_AS_ACTION_WITH_TEXT
)

// menu new item click listener
newItem.setOnMenuItemClickListener {
    Toast.makeText(this@MainActivity, "New Item Clicked", Toast.LENGTH_SHORT).show()
    true
}

// ----------------- remove an item from menu ----------------
menu.removeItem(R.id.cancel)

// ----------------- update an item in menu ----------------
menu.findItem(R.id.settings).apply {
    title = "Updated Title"
}

ตรวจสอบว่า menu ได้สร้างหรือยัง?

::actionMenu.isInitialized

ตรวจสอบว่า key ของ Array มีหรือไม่?

options.has("menu")

การเข้าถึง R -> Resource

android.R.attr.actionBarSize

ที่มา

Relate topics