【问题标题】:Android can't add search button to options menuAndroid无法将搜索按钮添加到选项菜单
【发布时间】:2014-05-02 09:41:33
【问题描述】:

我正在关注这个Tutorial ,但我无法在选项菜单上显示一个简单的搜索按钮。 代码:

ma​​in_activity_actions.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="ifRoom" />
    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:showAsAction="never" /> </menu>

将此添加到 MainActivity.java

public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);

    }

应用程序加载正常但没有图标显示,我已经下载了标准图标并将它们放置在每个可绘制文件夹中。任何想法为什么它不起作用?

不确定是否相关,但教程说明

"icon 属性需要一个图像的资源 ID。@drawable/ 后面的名称必须是您保存在项目的 res/drawable/ 目录中的位图图像的名称。例如,"@drawable/ ic_action_search" 指的是 ic_action_search.png。"

但是我没有文件夹 res/drawable/ 只有 res/drawable-hdpi, res/drawable-ldpi ... 假设我创建另一个文件夹 res/drawable/ 如果是这样,应该放哪个图标(我下载的官方图标集有所有 res/drawable-hdpi 的,但没有 res/drawable/)

【问题讨论】:

    标签: java android


    【解决方案1】:

    只需用我的代码替换您的代码,它就会为您工作。

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            tools:context="com.example.actionbar.MainActivity" >
             <item android:id="@+id/action_search"
                  android:icon="@drawable/ic_action_search"
                  android:title="@string/action_search"
                  app:showAsAction="always"/>
    
    
              <item android:id="@+id/action_settings"
                  android:title="@string/action_settings"
                  app:showAsAction="never"/>
    
    
    
        </menu>
    

    【讨论】:

    • 你只更改了 app:showAsAction="always" 教程说“ifroom”我也在横向模式下尝试过它没有显示“ifroom”为什么它不起作用?
    • 查看菜单标签第一行之后的行。
    • 在带有 androidx 的 Galaxy s8 android 8.0 上不适合我。
    【解决方案2】:

    一个关键注意 - XML 文件名不应该有大写字母,在您的情况下,它显示“Main_activity_blah...” 请记住这一点。你有'Main_activity.....'并且你在你的代码中调用'main_activity....'......

    请检查...并回复评论。

    【讨论】:

    • 好点,但实际文件是小写的,还要检查图标的 png 文件名
    • 文件全部小写:(我已经用可能相关的内容编辑了上面的帖子。最后两段
    猜你喜欢
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多