Android抽屉菜单项未占满宽度,求占满并靠右的解决方法
这问题我之前做项目时也碰到过,核心问题出在自定义actionLayout的根布局设置和NavigationView菜单项的默认内边距上,咱们一步步来调整就能解决:
1. 修改自定义布局的根容器属性
你的nav_drawer_current_user_profile.xml里根LinearLayout用了wrap_content宽度,这就导致它只会包裹内部内容,没法占满抽屉的宽度。咱们把它改成match_parent,同时设置gravity让内容靠右且垂直居中:
修改后的nav_drawer_current_user_profile.xml:
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="end|center_vertical" android:orientation="horizontal" <!-- 可选:添加合适的内边距避免内容贴边太生硬 --> android:paddingStart="16dp" android:paddingEnd="16dp"> <ImageView android:id="@+id/img_chat_room_icon" android:layout_width="@dimen/size_large" android:layout_height="@dimen/size_large" android:src="@drawable/ic_person_avatar_blue_24dp" /> <TextView android:id="@+id/txt_user_profile_nav_drawer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:maxLines="1" android:text="Current user" android:textColor="@color/light_blue" android:textSize="@dimen/nav_drawer_font_size" /> </LinearLayout>
2. 移除NavigationView菜单项的默认内边距
NavigationView的菜单项默认带有左右内边距,即使你的自定义布局设了match_parent,也会被这些内边距限制,看起来没完全占满。咱们可以通过两种方式调整:
方式一:全局调整所有菜单项
在base_layout.xml的NavigationView里添加内边距属性:
<android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:menu="@menu/drawer_menu_chat" app:itemPaddingStart="0dp" app:itemPaddingEnd="0dp" />
方式二:单独调整目标菜单项
如果不想影响其他菜单项,就在drawer_menu.xml的目标item里单独设置:
<item android:id="@+id/drawer_user_current" android:title="" app:actionLayout="@layout/nav_drawer_current_user_profile" app:itemPaddingStart="0dp" app:itemPaddingEnd="0dp" />
3. 额外优化:让文字占满剩余空间并靠右
如果希望TextView也占满剩余宽度且文字靠右,可以把TextView的layout_width设为match_parent,再给它设置gravity:
<TextView android:id="@+id/txt_user_profile_nav_drawer" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="end" android:maxLines="1" android:text="Current user" android:textColor="@color/light_blue" android:textSize="@dimen/nav_drawer_font_size" android:gravity="end|center_vertical" />
这样调整后,你的自定义菜单项就能完全占满抽屉宽度,并且内容靠右对齐了~
内容的提问来源于stack exchange,提问作者Sartheris Stormhammer
相关产品推荐
相关产品推荐

