我怀疑 Android 开发人员有意识地决定永远不会在狭窄的操作栏上显示单个菜单项的文本和图标。但如果你真的想这样做,你可以使用安卓:动作布局 http://developer.android.com/guide/topics/resources/menu-resource.html在您的 menu.xml 文件中。这Android ActionBar 文档 http://developer.android.com/guide/topics/ui/actionbar.html#ActionView有一个稍微好一点的解释。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_foo"
android:title="@string/menu_foo"
android:icon="@drawable/ic_menu_foo"
android:showAsAction="always"
android:actionLayout="@layout/action_button_foo" />
</menu>
然后创建你的action_button_foo.xml
layout:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="14dp"
android:paddingBottom="14dp"
android:gravity="center"
android:text="@string/menu_foo"
android:drawableLeft="@drawable/ic_menu_foo"
android:background="@drawable/bg_btn_action_bar"
android:clickable="true" />
并使用选择器作为背景bg_btn_action_bar.xml
,因此当您点击它时它会改变颜色:
<?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/bg_action_bar_pressed" />
<item
android:drawable="@color/transparent" />
</selector>
现在您需要使自定义视图处理点击事件。在您的 Activity 中,我喜欢这样做,以便我可以处理点击onOptionsItemSelected
以及我所有其他非定制物品。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my_menu, menu);
final MenuItem item = menu.findItem(R.id.menu_foo);
item.getActionView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onOptionsItemSelected(item);
}
});
return super.onCreateOptionsMenu(menu);
}