MenuItems具有不同的样式

时间:2013-01-05 02:38:39

标签: android android-actionbar android-menu

在Android上是否可以使用不同样式的MenuItems(选项菜单硬件键或操作栏中的那些 - 它们是相同的)?

我希望有一个选择器应用,另一个选择器使用不同的选择器。

从我的在线搜索中,我发现您可以更改主题并使用您自己的样式覆盖属性,但这适用于所有MenuItems。

我仍然可以在XML中设置android:background属性吗?

2 个答案:

答案 0 :(得分:2)

ActionBar的项目可能。您必须将要具有不同选择器的项目定义为自定义操作视图。

<item
    android:id="@+id/menu_custom"
    android:actionLayout="@layout/action_view"
    android:showAsAction="always"/> 

android:actionLayout引用的布局中,您有一个ImageView,您可以为其指定选择器,使其可点击并可对焦。

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/action_view_background"
    android:clickable="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:minWidth="56dip"
    android:paddingBottom="8dip"
    android:paddingTop="8dip"
    android:src="@drawable/ic_launcher" />

点击事件不由onOptionsItemSelected处理。您必须在OnClickListener附加onCreateOptionsMenu

menu.findItem(R.id.menu_custom).getActionView().setOnClickListener(l);

答案 1 :(得分:1)

引用this answer

  

根据http://developer.android.com/guide/topics/ui/menus.html#checkable

的官方文件      

注意:图标菜单中的菜单项(从“选项”菜单中)无法显示复选框或单选按钮。如果您选择在图标菜单中选中项目,则必须通过在每次状态更改时交换图标和/或文本来手动指示已选中状态。

同样适用于操作栏项,因为它是同一个对象,MenuItem