2

NavigationView使用 Java 代码构建了一个文本样式,然后使用该方法将菜单项的文本保持在特定的颜色和字体中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>
4

1 回答 1

3

我想让你成为应用于's itemsstyle的默认值的后代会奏效:styleNavigationView

<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);


结果

在此处输入图像描述

于 2017-05-11T17:24:39.627 回答