NavigationView.setItemTextAppearance() не работает

Я построил 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>

1 ответ

Решение

Я полагаю style потомок по умолчанию style что применяется к NavigationViewсработает:

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

Результат

введите описание изображения здесь

Другие вопросы по тегам