Настраиваемый размер пункта меню и размер текста в представлении навигации
Я использую код для настройки высоты текста и высоты строки в навигационном представлении, и он работает на api21+, но тот же код не работает в api 16. Как я могу заставить его работать?
Код:
Создайте стиль и примените его к NavigationView, используя app:theme
<style name="NavigationViewStyle">
<item name="android:textSize">20sp</item> <!-- menu item text size-->
<item name="android:listPreferredItemHeightSmall">40dp</item><!-- menu item height-->
</style>
Затем примените этот стиль к NavigationView, используя app:theme
<android.support.design.widget.NavigationView
...
...
app:theme="@style/NavigationViewStyle"
...
...
</android.support.design.widget.NavigationView>
2 ответа
Решение
В коде вы можете использовать этот код для настройки просмотра текста. попробуйте это и дайте мне знать.
private final ArrayList<View> mMenuItems = new ArrayList<>();
final Menu navMenu = navigationView.getMenu();
// Install an OnGlobalLayoutListener and wait for the NavigationMenu to fully initialize
navigationView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Remember to remove the installed OnGlobalLayoutListener
navigationView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
// Loop through and find each MenuItem View
for (int i = 0; i < navMenu.size(); i++) {
final String id = "nav_menuItem" + (i);
final MenuItem item = navMenu.findItem(getResources().getIdentifier(id, "id", getPackageName()));
navigationView.findViewsWithText(mMenuItems, item.getTitle(), View.FIND_VIEWS_WITH_TEXT);
}
// Loop through each MenuItem View and apply your custom Typeface
for (final View menuItem : mMenuItems) {
((TextView) menuItem).setTypeface(fontLight, Typeface.NORMAL);
}
}
});
Проверьте ваши каталоги res/values, вы можете найти каталог res/values-v16, который реализует другой стиль