当我们定义带有子菜单项的部分的NavigationView时。它左侧将子项与节标题对齐:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Sub items">
<menu>
<item
android:title="Sub item 1" />
<item
android:title="Sub item 2" />
</menu>
</item>
</menu>
我尝试添加一个尺寸正确的透明图片来填充:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Sub items">
<menu>
<item
android:icon="@drawable/ic_transparent"
android:title="Sub item 1" />
<item
android:icon="@drawable/ic_transparent"
android:title="Sub item 2" />
</menu>
</item>
</menu>
但默认情况下为NavigationView:
我找不到如何配置此填充或图标大小。
问题我们如何更改子项目缩进以使子项更加缩进?
我更喜欢通过属性进行清理,而不是插入透明图像。
答案 0 :(得分:8)
<强>声明强>
请参阅我对Noundla关于主要问题的评论,在那里我解释为什么我认为缩进不是正确的方法。
<强>答案强>
话虽如此,如果你必须有缩进,最简单的方法是用空格填充每个菜单项。这并不理想,但是当有更好的选择时,它很容易实现,理解和替换。它可以与内置的Android NavigationView 配合使用,而无需引入外部库:
以下是可行的代码示例:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Sub items">
<menu>
<item android:title="    Sub item 1" />
<item android:title="    Sub item 2" />
</menu>
</item>
</menu>
我希望这能节省时间。
答案 1 :(得分:2)
不确定您是否得到了答案,但我遇到了同样的问题并最终使用了MaterialDrawer - https://github.com/mikepenz/MaterialDrawer。
您需要扩展SecondaryDrawerItem并在bindView onPostBindView上添加填充。
drawer = new DrawerBuilder()
.withActivity(this)
.withHeader(drawerHeader)
.withSavedInstance(savedInstanceState)
.addDrawerItems(
new PrimaryDrawerItem().withName("Item1"),
new CustomSecondaryDrawerItem().withName("SubItem1"),
new CustomSecondaryDrawerItem().withName("SubItem2")
)
.build();
<强> CustomDrawerSecondaryItem.java 强>
public class CustomSecondaryDrawerItem extends SecondaryDrawerItem {
@Override
public void onPostBindView(IDrawerItem drawerItem, View view) {
Context ctx = view.getContext();
int paddingLeft = ctx.getResources().getDimensionPixelSize(R.dimen.drawer_secondary_item_padding_left);
view.setPadding(paddingLeft, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom());
super.onPostBindView(drawerItem, view);
}
}