2017-05-11 31 views
2

我使用Java代碼構建了NavigationView,然後使用方法setItemTextAppearance(int resId)設置文本樣式以使我的菜單項的文本保持特定的顏色和字體。但是這種方法不起作用。我的文字沒有改變。NavigationView.setItemTextAppearance()不工作

注意:所有其他方法工作的偉大,就像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> 

回答

2

我想你的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); 

 

結果

enter image description here

+0

我嘗試這一個也。沒有工作:( –

+0

@LuizFernandoSalvaterra,這個設置在我的機器上工作。 – azizbekian

+0

嘗試在樣式中應用顏色並刪除 'navigationView.setItemTextColor(ColorStateList.valueOf(ContextCompat.getColor(context,android.R.color.holo_blue_bright )));''從你的java代碼 –