android 4.0,操作栏上的文本永远不会显示

2024-01-12

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

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

我以前见过这样做,甚至在 android.developer 的开发人员指南中,但我似乎找不到如何让它显示的答案。


我怀疑 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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android 4.0,操作栏上的文本永远不会显示 的相关文章

随机推荐

  • 将 SQL 注释添加到 Linq 生成的查询中,以便它在 SQL 探查器中可见

    我们想要在一个项目中使用 Linq to SQL 这是我们第一次使用 Linq 通常我们只使用存储过程调用 到目前为止 一切都运行良好 但 DBA 询问我们是否可以以在 Profiler 中可见的方式标记 Linq 生成的 SQL 查询 我
  • 使用 google_oauth2 获取“错误:redirect_uri_mismatch”

    该网址似乎是正确的 昨天更新 文件也是 omn iauth rb provider google oauth2 MY CLIENT ID apps googleusercontent com MY CLIENT SECRET scope g
  • create-react-app 子文件夹项目不会 lint

    在子文件夹中使用 create react app 引导的项目不会出现 lint 但是 如果我在 VSCode 中以 root 身份打开项目子文件夹 如下图所示 或者在 root 下设置一个新的 create react app 项目 则
  • 从 vlcj 播放器数组中播放视频

    我正在尝试播放以字符串形式提供的 MRL 列表中的视频 问题是 当我尝试运行该类时 面板列表显示带有按钮 只有一个面板工作 但播放按钮不起作用 其他面板也不起作用 尽管我故意留下了停止按钮 因为我没有向它们添加动作侦听器 我想要实现的是 当
  • 如何使用scala或python在apache Spark中运行多线程作业?

    我面临着与 Spark 并发相关的问题 这阻止了我在生产中使用它 但我知道有一种解决方法 我正在尝试使用订单历史记录对 700 万用户的 10 亿种产品运行 Spark ALS 首先 我获取不同用户的列表 然后对这些用户运行循环以获取推荐
  • Vue 组件未显示在 Laravel 中

    我的 vue 组件没有显示出来 我看不出哪里出了问题 我希望另一双眼睛能指出我哪里出了问题 我正在运行 npm run watch 并清除了缓存 我的应用程序 js First we will load all of this projec
  • 在Java中启动VLC并通过rc接口连接到它

    我已经看过这个帖子了 但我仍然遇到一个问题 在java中启动vlc播放器 https stackoverflow com questions 1731299 starting vlc player in java看来 VLC 的 Java
  • 在带有整数数组的 ArrayList 上使用 contains

    我有一个ArrayList
  • Scala Swing 新手

    我正在尝试为我正在做的应用程序创建一个登录窗口 我一整天都在寻找一个例子 但我似乎找不到任何有帮助的东西 我的基本结构如下 App scala object App extends SimpleSwingApplication val ui
  • 检查运行时是否支持 SSE [重复]

    这个问题在这里已经有答案了 我想检查运行时是否支持 SSE4 或 AVX 以便我的程序可以利用处理器特定的指令 而无需为每个处理器创建二进制文件 如果我可以在运行时确定它 我可以使用一个接口并在不同的指令集之间切换 GCC 有一种方法可以做
  • Jetpack Compose Lazy Column 单选

    我正在从服务器获取数据并将其显示在列表中 可以一键选择每个项目以显示按钮 但我无法关闭它 只能打开它 这是列表类的项目 data class Task val deviceName String val deviceId String va
  • 单击类名为 selenium 的元素

    我正在尝试从网站上抓取酒吧的营业时间 有一个酒吧列表 如果您导航到您可以找到营业时间 当我点击具有类名的元素时遇到问题 我已经编写了代码来获取一个场所的营业时间 但是 我无法从第一个链接导航到每个场所 当我获得一个场地的营业时间时 此代码有
  • Puma 和 Nginx 502 错误网关错误 (Ubuntu Server 14.04)

    我需要部署我的 Rails 应用程序 所以我遵循了这里的所有步骤 https www digitalocean com community tutorials how to deploy a rails app with puma and
  • 在聚合中使用限制排序和跳过排序时出现 Mongodb 复制问题

    通过使用skip和limit排序来获取记录时面临重复记录的问题 采集数据 id ObjectId 594b507c9b9469ec9da6a78b name F percentage 60 0 weightedFilter 2 0 like
  • 获取 POST 变量

    我将 C 与 ASP NET 结合使用 如何检查参数是否已作为 POST 变量接收 如果参数是通过 POST 或 GET 发送的 我需要执行不同的操作 使用它来获取 GET 值 Request QueryString key 这对于 POS
  • 我可以以编程方式启用/禁用异常中断吗?

    我希望能够在调试时中断异常 就像在 Visual Studio 2008 的菜单调试 异常对话框中一样 除了我的程序在到达我想要调试的位之前有许多有效的异常 因此 不必每次都使用对话框手动启用和禁用它 是否可以使用 pragma 或其他方法
  • 如何解决 crypto.getRandomValues() 不支持的问题?

    切换到涡轮机组后 我出现以下错误 https next auth js org errors jwt session error https next auth js org errors jwt session error不支持 cryp
  • Java 泛型和超类型标记

    我试图将以下三种方法变成一个通用解决方案 我尝试了一些可以编译但在运行时表现不佳的想法 public static List
  • Xamarin iOS 调试器未命中断点

    昨天早上 当我开始开发 Xamarin iOS 应用程序时 我的调试器停止了工作 我可以放置断点 但是一旦应用程序启动 断点就会像红色甜甜圈一样变得空心 我已经多次重建 清理项目 我还擦除了 obj bin 文件夹 但似乎没有任何效果 我无
  • android 4.0,操作栏上的文本永远不会显示

    我正在尝试使用 google 的新 api 特别是操作栏 当构建设置为 api 10 时 如果我按下菜单按钮 我会看到漂亮的菜单选项 每个选项都有图片和图标 使用 api 14 时 无论我尝试什么 它总是将图标放在操作栏中 没有任何文本 我