我有一个导航抽屉,里面有很多项,用户需要上下滚动才能查看所有项。
我希望减小每个菜单项之间的间距,以便所有项目都适合标准屏幕,无需滚动。
有一种方法可以控制菜单项之间的边距吗?
我希望减小每个菜单项之间的间距,以便所有项目都适合标准屏幕,无需滚动。
有一种方法可以控制菜单项之间的边距吗?
这里的回答帮助我减少了组之间的空间。我使用了以下维度。
<dimen tools:override="true" name="design_navigation_separator_vertical_padding">1dp</dimen>
NavigationView
的itemBackground
属性。下面我会详细解释:NavigationMenuAdapter
,我们会发现有四种类型的项目:private static final int VIEW_TYPE_NORMAL = 0;
private static final int VIEW_TYPE_SUBHEADER = 1;
private static final int VIEW_TYPE_SEPARATOR = 2;
private static final int VIEW_TYPE_HEADER = 3;
case VIEW_TYPE_NORMAL:
{
NavigationMenuItemView itemView = (NavigationMenuItemView) holder.itemView;
itemView.setIconTintList(iconTintList);
if (textAppearanceSet) {
itemView.setTextAppearance(textAppearance);
}
if (textColor != null) {
itemView.setTextColor(textColor);
}
ViewCompat.setBackground(
itemView,
itemBackground != null ? itemBackground.getConstantState().newDrawable() : null);
NavigationMenuTextItem item = (NavigationMenuTextItem) items.get(position);
itemView.setNeedsEmptyIcon(item.needsEmptyIcon);
itemView.setHorizontalPadding(itemHorizontalPadding);
itemView.setIconPadding(itemIconPadding);
if (hasCustomItemIconSize) {
itemView.setIconSize(itemIconSize);
}
itemView.setMaxLines(itemMaxLines);
itemView.initialize(item.getMenuItem(), 0);
break;
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle">
<size android:height="60dp"/>
</shape>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:itemBackground="@drawable/bk_menu_item"/>
我知道这不是一个完美的解决方案,但在我的情况下似乎是唯一可行的解决方案。
styles.xml
文件中。<style name="NavigationTheme" parent="AppTheme">
<item name="android:textSize">16sp</item>
<item name="android:layout_marginBottom">02dp</item>
</style>
android:theme="@style/NavigationTheme"
在 dimens.xml
文件中添加以下代码
<dimen tools:override="true" name="design_navigation_icon_padding">16dp</dimen>