菜单项标题未显示

4
菜单项的标题在片段中没有显示。我在菜单文件中有两个项目,第一个项目带有图标和标签showAsAction=always,以在工具栏中显示图标。第二个项目只有标题。
我不知道出了什么问题。
所有与菜单项相关的操作都是可行的。例如以下动作。

enter image description here

menu_sale.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">

    <item android:title="Scanner"
        android:id="@+id/miScanner"
        android:icon="@drawable/ic_baseline_qr_code_scanner"
        android:iconTint="@color/white"
        app:showAsAction="always"
        />

    <item
        android:title="Add Credit Record"
        android:id="@+id/miAddCreditRecord"
        />

</menu>

没有添加showAsAction='always'属性的项在我的应用中无法显示标题。

以下是我用Java代码填充菜单的方式。

@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.menu_sale, menu);
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    int id = item.getItemId();
    switch (id) {
        case R.id.miScanner:
            scanCode();
            break;
        case R.id.miAddCreditRecord:
            showBottomSheetDialog();
            break;
    }
    return super.onOptionsItemSelected(item);
}

我的主题 theme.xml

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.AzmiUnaniStore" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
    
    <style name="NoActionBar" parent="Theme.AzmiUnaniStore">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>

    <style name="BottomSheetDialogTheme" parent="Theme.Design.BottomSheetDialog">
    </style>

    <style name="BottomSheetStyle" parent="Widget.Design.BottomSheet.Modal">
        
    </style>
    
</resources>

可能性

标题显示正常,但当操作菜单的颜色与背景颜色都为白色时,我无法看到标题。

谢谢。


<item name="colorOnPrimary">@color/white</item> - javdromero
@javdromero 在发布问题之前,我已经将colorOnPrimary的值更改为其他值以调试该问题。但问题仍然存在。 - mufazmi
编辑文本和搜索栏的颜色怎么样?它们也是白色吗? - javdromero
@javdromero 搜索框实际上不是 EditText 而是 TextView,当用户点击它时,我会打开另一个活动。BottomSheetDialog 中的 EditText 是默认的黑色。 - mufazmi
DayNight.DarkActionBar 可能是问题所在,请尝试在您的主题中使用 <item name="android:actionMenuTextColor">@color/your_color</item> 覆盖颜色。或者参考这个答案 - javdromero
3个回答

2
问题在于弹出菜单中的文本颜色。
在您的MaterialToolbar中添加app:popupTheme属性。
    <com.google.android.material.appbar.MaterialToolbar
        app:popupTheme="@style/AppTheme.PopupOverlay" 
        ../>

使用:

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary" >
    <!-- text color -->
    <item name="android:textColor">@color/...</item>  
</style>

enter image description here


1

我也遇到了同样的问题。在我的情况下,我使用了带有样式的自定义工具栏。

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ToolbarStyle" />

工具栏样式

<style name="ToolbarStyle" parent="AppTheme">
    <item name="android:textColorPrimary">@color/white</item>
</style>

所以我将ToolbarStyle中的android:textColorPrimary更改为黑色,现在它可以正常工作了。

我已经按照您的答案操作,但问题仍然存在。请查看结果 -> https://youtu.be/hCuhSkSgzGg - mufazmi
请将 android:textColorPrimary 从白色更改为黑色。 - Shams
工作正常,但它改变了工具栏的所有文本颜色,如标题和图标等。我只想更改menuItemTextColor。 - mufazmi

0

只需将此代码添加到您的themes.xml和themes.xml(night)文件中即可

<item name="android:textColor">@color/white</item>

1
使颜色变为黑色。 - Murat-Dayan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接