Android ActionBar菜单项不显示文本

Android ActionBar菜单项不显示文本,android,android-actionbar,Android,Android Actionbar,我有一个菜单布局,其中只有一个项目 <?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"> <item android:id="@+id/toolbar_right_button

我有一个菜单布局,其中只有一个项目

<?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">
    <item
        android:id="@+id/toolbar_right_button"
        android:icon="@drawable/ic_toolbar_locked"
        android:orderInCategory="1"
        android:title="Logout"
        app:showAsAction="always|withText"/>
</menu>

正如你所看到的,我已经包含了withText属性,但我仍然只得到了图标


如何才能同时显示图标和文本?

我已经尝试了您的菜单xml,它在android 4.1.1、5.0.0上运行

但它在4.3上不起作用

要解决此问题,请参阅


它对项目使用自定义布局

我不确定为什么withText对我不起作用,所以我创建了一个
操作布局
来代替它

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/toolbar_right_button"
        android:icon="@drawable/ic_toolbar_locked"
        android:orderInCategory="1"
        android:title="Logout"
        app:actionLayout="@layout/menu_item_logout"
        app:showAsAction="ifRoom|withText"/>
</menu>

我同意你的答案,但我必须做一些挖掘工作才能让它在我的代码中工作,最终,我必须为按钮创建一个onClickListener

在我的代码中,我在
onCreateOptions菜单(Menu Menu)
方法中写道:

menu.getItem(indexInMenu.getActionView().findViewById(R.id.button\u logout).setOnClickListener(…)

这使得菜单项在被app:actionLayout中的按钮替换时响应迅速。您可以尝试:

<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" >
    <!-- "Mark Favorite", should appear as action button if possible -->
    <!-- Settings, should always be in the overflow -->
    <item
        android:title="Settings"
        android:id="@+id/mainMenu"
        android:icon="@drawable/ic_3d_rotation_black_24dp"
        app:showAsAction="always">
        <menu>
            <item
                android:id="@+id/menu_logout1"
                android:icon="@drawable/ic_3d_rotation_black_24dp"
                android:title="logout1"/>
            <item
                android:id="@+id/menu_logout3"
                android:icon="@drawable/ic_3d_rotation_black_24dp"
                android:title="logout3"/>
        </menu>
    </item>
    <item
        android:id="@+id/menu_logout2"
        android:icon="@drawable/ic_3d_rotation_black_24dp"
        android:title="logout2"
        app:showAsAction="always"/>
</menu>


请注意,此示例还将绘制一些图标,因此如果不需要图标,只需删除图标属性。

从中删除图标当工具栏菜单项中的文本未显示时,这可能与样式设置有关。例如,当您以白色显示工具栏中的应用程序标题的方式组织样式时,您的菜单项可能会变为白色

要解决此问题,需要为工具栏设置两个属性:

  • 这是工具栏的常规样式。文本颜色为白色。当你面对“无文本”问题时,也许你正在使用类似的东西
  • 
    @android:彩色/白色
    @android:彩色/白色
    
  • 要确保显示菜单中的文本,不仅要设置工具栏的app:theme,还要设置app:poputheme。在本例中,poputheme设置为浅主题,因为这会导致黑色文本
  • 
    
    使用此设置,它可能会解决您的问题

    <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" >
        <!-- "Mark Favorite", should appear as action button if possible -->
        <!-- Settings, should always be in the overflow -->
        <item
            android:title="Settings"
            android:id="@+id/mainMenu"
            android:icon="@drawable/ic_3d_rotation_black_24dp"
            app:showAsAction="always">
            <menu>
                <item
                    android:id="@+id/menu_logout1"
                    android:icon="@drawable/ic_3d_rotation_black_24dp"
                    android:title="logout1"/>
                <item
                    android:id="@+id/menu_logout3"
                    android:icon="@drawable/ic_3d_rotation_black_24dp"
                    android:title="logout3"/>
            </menu>
        </item>
        <item
            android:id="@+id/menu_logout2"
            android:icon="@drawable/ic_3d_rotation_black_24dp"
            android:title="logout2"
            app:showAsAction="always"/>
    </menu>
    
    android:icon="@drawable/ic_baseline_add_24"
    
    <style name="ToolBarStyle" parent="ThemeOverlay.MaterialComponents.Dark.ActionBar">
            <item name="android:textColorPrimary">@android:color/white</item>
            <item name="android:textColorSecondary">@android:color/white</item>
    </style>
    
    
    <androidx.appcompat.widget.Toolbar
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:background="@color/supplyon_blue"
                app:theme="@style/ToolBarStyle"
                app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light"
                android:id="@+id/toolbar" />