NavigationView.setItemTextAppearance() 不工作

NavigationView.setItemTextAppearance() not working

我使用 Java 代码构建了一个 NavigationView,然后使用方法 setItemTextAppearance(int resId) 设置了文本样式,使菜单项的文本保持特定的颜色和字体。但是这种方法不起作用。我的文字没有改变。

注意 :所有其他方法都很好用,例如 setItemTextColor()setItemBackground()

这是我的代码:

mNavigationView = new NavigationView(context);

mNavigationView.setId(R.id.nav_view);
mNavigationView.setFitsSystemWindows(true);

// This method works great!  
mNavigationView.setBackgroundColor(ContextCompat.getColor(context, R.color.colorPrimary));

// This too. 
mNavigationView.setItemTextColor(ColorStateList.valueOf(ContextCompat.getColor(context,  android.R.color.white)));

// This method is not working.   
mNavigationView.setItemTextAppearance(R.style.MenuTextStyle);

这是我的样式代码:

 <style name="MenuTextStyle">
        <item name="android:textSize">16sp</item>
        <item name="android:fontFamily">sans-serif-medium</item>
        <item name="android:textStyle">normal</item>
        <item name="android:textColor">#ffffff</item>
        <item name="android:lineSpacingExtra">0sp</item>
</style>

我想使您的 style 成为应用于 NavigationView 项目的默认值 style 的后代会成功:

<style name="MenuTextStyle" parent="TextAppearance.AppCompat.Medium">
    <item name="android:textSize">22sp</item>
    <item name="android:textStyle">italic</item>
    <item name="android:textColor">#ff0000</item>
</style>

在Java代码中:


    navigationView.setItemTextColor(null);
    navigationView.setItemTextAppearance(R.style.MenuTextStyle);


结果