【问题标题】:Appcompat toolbar showAsAction doesn't work properlyAppcompat 工具栏 showAsAction 无法正常工作
【发布时间】:2019-12-05 08:42:59
【问题描述】:

我的设备最多允许在任务栏中显示 3 个图标,如果超过此数量,所有图标都会被隐藏,即使我有 showAsAction="always" 或 showAsAction="ifRoom"。

这是我的代码:

menu.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">
    <group android:id="@+id/groupActions">
        <item
            android:id="@+id/action_admin"
            android:orderInCategory="0"
            android:title="@string/buttonAdmin"
            app:showAsAction="always" />

        <item
            android:id="@+id/action_readMode"
            android:orderInCategory="1"
            android:title="@string/buttonReadModeOn"
            android:icon="@drawable/ic_read_mode_24dp"
            app:showAsAction="always" />
    </group>

    <group android:id="@+id/groupActions">
        <item
            android:id="@+id/action_schedule"
            android:orderInCategory="2"
            android:title="@string/buttonSchedule"
            android:icon="@drawable/ic_today_24dp"
            app:showAsAction="ifRoom" />

        <item
            android:id="@+id/action_report"
            android:orderInCategory="3"
            android:title="@string/buttonReport"
            android:icon="@drawable/ic_list_check_24dp"
            app:showAsAction="ifRoom" />

        <item
            android:id="@+id/action_logout"
            android:orderInCategory="4"
            android:title="@string/buttonLogout"
            app:showAsAction="never" />
    </group>

    <group android:id="@+id/groupInfo">
        <item
            android:id="@+id/action_help"
            android:orderInCategory="5"
            android:title="@string/buttonHelp"
            android:visible="false"
            app:showAsAction="never" />

        <item
            android:id="@+id/action_contact"
            android:orderInCategory="6"
            android:title="@string/buttonContact"
            app:showAsAction="never" />

        <item
            android:id="@+id/action_about"
            android:orderInCategory="7"
            android:title="@string/buttonAbout"
            app:showAsAction="never" />
    </group>
</menu>

这里是 MyActivity 上的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu, menu);
    MenuCompat.setGroupDividerEnabled(menu, true);
    this.menu = menu;
    MenuItem item = menu.findItem(R.id.action_readMode);
    if (item != null) {
        tintReaderModeIcon(item);
    }
    return super.onCreateOptionsMenu(menu);
}

我的想法是显示具有 showAsAction="always" 的两个图标和具有最高优先级的 showAsAction="ifRoom" 的图标。

这是期望的结果:

这就是我得到的:

请帮忙解决这个问题。

编辑:感谢 Denis95 的回复,我已经设法解决了一半的问题。现在带有 showAsAction="true" 的图标可以正确显示了。

【问题讨论】:

  • 与我们分享您在哪里使用它的代码
  • 您能否分享一些所需结果的屏幕截图以及实际发生的情况?
  • 我已经用请求的信息编辑了问题。

标签: android appcompat-v7-toolbar


【解决方案1】:

从资源文件中可以看出,您将 5 个项目组合在一起。尝试将您希望始终显示在该组之外的 AppBar 上的项目。它应该可以解决问题。

【讨论】:

  • 好的,首先感谢您的回复。我尝试了他的建议并解决了一半的问题,现在 showAsAction="always" 按预期工作,但 showAsAction="ifRoom" 没有。在我的菜单中有两个具有此属性的图标,但没有显示,即使其中一个有空间。
  • 是的,因为您将项目组合在一起。如果您希望它们在操作栏上可见,则不应这样做。
  • 感谢您的回答,我对分组进行了一些测试,我明白您的意思了。在组内使用“ifRoom”时,该组的所有元素都必须可见才能出现在应用程序栏中。
猜你喜欢
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
相关资源
最近更新 更多