android 4.0,操作栏上的文字从不显示

标签 android android-4.0-ice-cream-sandwich android-actionbar

我正在尝试使用来自 google 的新 api,特别是操作栏。

当build设置为 api 10 时,如果我按下菜单按钮,我会看到漂亮的菜单选项,每个选项都有一个图片和图标。使用 api 14 时,无论我尝试什么,它总是将图标放在操作栏中,没有文字。我已经尝试了我能想到的一切。我给了它“带文本”属性,将文本更改为单个字符(以防它是房间问题),但没有。

我之前已经看到过这样做,甚至在 android.developer 的开发人员指南中,但我似乎无法找到关于如何让它显示的答案。

最佳答案

我怀疑 Android 开发人员有意识地决定永远不要在狭窄的操作栏上显示单个菜单项的文本和图标。但是如果你真的想这样做,你可以使用 android:actionLayout在您的 menu.xml 文件中。 Android ActionBar documentation有更好的解释。

<?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 布局:

<?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>

现在您需要让您的自定义 View 处理点击事件。在您的 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);
}

关于android 4.0,操作栏上的文字从不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282122/

相关文章:

android - 根据样式更改 ActionBar 菜单图标

android - 如何以编程方式更改 ACRA 'interaction mode' 设置

android - 使用 MediaCodec 在 Android 上使用 H264 数据解码 RTP 流

android - 复选框无法与 ListView 一起正常工作

设置 ActionBar 颜色时的 Android UI 故障

android - 如何将项目添加到顶部 ActionBar?

java - OpenCV:如何将检测到的人脸保存到Android中的SD卡位置?

安卓工作室 : Ice Cream Sandwich (API Level 15) Device Configuration not showing up even though system image is installed

android - 自定义半透明Android ActionBar

Android:在 FrameLayout 中翻译动画后无法单击底部的 TextView