【问题标题】:Android Menu item is displayed in overflow area even with app:showAsAction always [duplicate]即使使用 app:showAsAction 始终 [重复],Android 菜单项也会显示在溢出区域中
【发布时间】:2017-09-06 07:46:03
【问题描述】:

我正在使用 MainActivity 来扩展 Activity 类。项目使用的最低 API 为 11。当我膨胀菜单项时,它总是显示在溢出中。

public class MainActivity extends Activity {
....
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    // Inflate the Menu Items
    getMenuInflater().inflate(R.menu.menu_main,menu);
    return true;
}

menu_main.xml

<?xml version="1.0" encoding="utf-8"?>
 <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=".MainActivity">
 <item android:id="@+id/attach"
    android:title="Attachment"
    android:orderInCategory="1"
    app:showAsAction="always"/>

</menu>

样式.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

【问题讨论】:

  • 请不要放代码截图
  • 发布 menu_main.xml 文件

标签: android


【解决方案1】:

您的 MainActivity 扩展了 Activity 而不是 AppcompatActivity 并且您使用的是 android: Theme.Holo.Light 本机主题,所以您可以替换

app:showAsAction="always" 与 android:showAsAction="always"

尝试一下,喜欢

<?xml version="1.0" encoding="utf-8"?>
 <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=".MainActivity">
 <item android:id="@+id/attach"
    android:title="Attachment"
    android:orderInCategory="1"
    android:showAsAction="always"/>

</menu>

【讨论】:

  • 谢谢。这是 somwhow 引用旧的 AppcompatActivity 依赖项。
  • 当我扩展 Activity 并使用 android:showAsAction="always" 时,这个答案不起作用。这个答案是错误的@Biswajitghosh
  • @AmitVaghela 你用的是哪个主题?
  • parent="Theme.AppCompat.Light.DarkActionBar"
  • @AmitVaghela 他正在使用 android:Theme.Holo.Light 这就是区别。我希望你明白吗?:)
【解决方案2】:

设置为 showAsAction="always"

【讨论】:

  • 仍然没有帮助..
【解决方案3】:

试试这个代码,

在溢出中显示:

yourapp:showAsAction="always"

显示下溢

yourapp:showAsAction="never"

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:yourapp="http://schemas.android.com/apk/res-auto">
    <!-- Search, should appear as action button -->
    <item
        android:id="@+id/attach"
        android:icon="@drawable/ic_action_hardware_keyboard_arrow_left"
        android:title="Attachment"
        android:orderInCategory="1"
        yourapp:showAsAction="ifRoom" />

</menu>

检查这个menu resource doc

【讨论】:

  • 试试我更新的答案,如果您有任何问题,请告诉我@Biswajit ghosh
  • 嗨阿米特感谢您的回答。但只有当您的项目依赖于 AppCompat 时,它才会起作用。由于我删除了 Appcompat 依赖项,所以我不得不使用 android:showAsAction 而不是像 yourapp 这样的自定义命名空间:.
猜你喜欢
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多