我的应用程序带有DrawerLayout的导航视图。我在菜单中添加了编程项目,因为我通过网络收到信息。但有时候,一个项目名称可能会非常长,即使有了椭圆形图标也会被切断,并且#34; ..."
有人知道如何为菜单项设置多行吗?
由于
答案 0 :(得分:19)
从Android支持设计库中覆盖 design_navigation_menu_item.xml 并修改您需要的内容(设置android:ellipsize="end"
和android:maxLines="2"
)
您的 res / layout / design_navigation_menu_item.xml 应如下所示:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<CheckedTextView
android:id="@+id/design_menu_item_text"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:drawablePadding="@dimen/design_navigation_icon_padding"
android:gravity="center_vertical|start"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
android:ellipsize="end"
android:maxLines="2" />
<ViewStub
android:id="@+id/design_menu_item_action_area_stub"
android:inflatedId="@+id/design_menu_item_action_area"
android:layout="@layout/design_menu_item_action_area"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
</merge>
然而,您应该优化文本以正确遵循Material Design指南。
你不得覆盖任何东西只是椭圆化文本:
NavigationView
res / values / styles.xml
<style name="TextAppearance">
<item name="android:ellipsize">end</item>
</style>
res / layout / activity_main.xml
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"
app:theme="@style/TextAppearance" />
答案 1 :(得分:2)
将样式添加到NavigationDrawer中,然后在样式中包含2行。
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/estilo"
android:fitsSystemWindows="true"
app:itemTextColor="@color/white"
app:theme="@style/NavigationDrawerStyle"
app:menu="@menu/activity_main_drawer" />
<style name="NavigationDrawerStyle">
<item name="android:lines">2</item>
</style>
答案 2 :(得分:0)
答案 3 :(得分:0)
我有同样的问题,我尝试过尝试过,Menu
没有进展,我不能说这是不可能的,但我找不到办法让{{1}行。
但如果您不坚持使用MenuItem
,我建议您在布局中使用Menu
或ListView
,如下所示:
RecyclerView
正如您所看到的,没有特别的事情可以解释,没有菜单,只有<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_draw_header">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_marginTop="160dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.design.widget.NavigationView>
,RecyclerView
值与标题高度相同,我确定您知道其余的故事(如何激活layout_marginTop
),这种方法为RecyclerView
菜单项(实际上是NavigationView
项)提供了更大的灵活性。
如果我的回答不够明确,请告诉我。
结果如下:
答案 4 :(得分:0)
您不应更改它。
查看材料设计指南:https://material.io/design/components/navigation-drawer.html#anatomy
答案 5 :(得分:0)
只需在 NavigationView 标记上添加app:itemMaxLines="2"
属性,如下所示:
<com.google.android.mayerial.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"
app:itemMaxLines="2" />
注意:物质依赖性为-
implementation 'com.google.android.material.material:1.0.0'
答案 6 :(得分:-1)
在NavigationDrawer中添加一种样式,将行数声明为“两”,如下所示:
<style name="NavigationDrawerStyle">
<item name="android:lines">2</item>
</style>
并在您看来:
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/estilo"
android:fitsSystemWindows="true"
app:itemTextColor="@color/white"
app:theme="@style/NavigationDrawerStyle"
app:menu="@menu/activity_main_drawer" />