[英]Android: How to change the background of the menu item in the toolbar
您需要像示例中一樣更改 ~ showAsAction = always
元素的背景。
我嘗試通過帶有背景和圖標的圖層列表來自定義 xml,但結果是,背景僅位於圖標內部,而不是菜單中項目的整個周邊。 還嘗試了android(app):background
, android(app):itemBackground
,但它不起作用
我的菜單 xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:layout_width="wrap_content"
android:icon="@drawable/ic_search"
android:title="Search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="collapseActionView|ifRoom" />
<item
android:id="@+id/action_filter"
android:layout_width="wrap_content"
android:icon="@drawable/ic_slider"
app:iconTint="@color/green"
android:iconTint="@color/green"
android:title="filters"
app:showAsAction="collapseActionView|ifRoom"
/>
我在片段中添加菜單
val menuHost: MenuHost = binding.searchAnimeToolbar
menuHost.addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.menu, menu)
val menuFilterButton = menu.findItem(R.id.action_filter)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
if(menuItem.itemId == R.id.action_filter) {
Toast.makeText(context, "coming soon", Toast.LENGTH_LONG).show()
}
return true
}
}, viewLifecycleOwner)
更新:這種添加單獨drawable的方法不適合,因為需要為菜單項設置背景,而不是圖標。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/opacity_green"/>
<corners android:radius="2dp"/>
</shape>
</item>
<item android:drawable="@drawable/ic_slider">
</item>
</layer-list>
</item>
</selector>
首先為您的菜單項創建一個可繪制對象。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/your_drawable" />
<item android:state_selected="true" android:drawable="@drawable/your_drawable" />
<item android:state_focused="true" android:drawable="@drawable/your_drawable" />
<item android:drawable="@drawable/your_drawable" />
</selector>
然后把它作為菜單項的圖標。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
<item android:id="@+id/itemTodo"
android:icon="@drawable/item_selector"
android:title="TODO"
app:showAsAction="always"/>
</menu>
希望對你有幫助。 編碼愉快!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.