Android 导航视图多行文字
我有一个带有抽屉布局导航视图的应用程序。我以编程方式在菜单中添加项目,因为我通过网络接收信息。但有时,项目名称可能很长,甚至连省略号图标都会被截断“…” 有人知道如何为我的菜单项设置多行吗 谢谢看看这个。默认的android幻灯片菜单不太灵活,您很可能需要创建自定义视图。Android 导航视图多行文字,android,navigation-drawer,multiline,Android,Navigation Drawer,Multiline,我有一个带有抽屉布局导航视图的应用程序。我以编程方式在菜单中添加项目,因为我通过网络接收信息。但有时,项目名称可能很长,甚至连省略号图标都会被截断“…” 有人知道如何为我的菜单项设置多行吗 谢谢看看这个。默认的android幻灯片菜单不太灵活,您很可能需要创建自定义视图。 我是AndroidHive的教程。覆盖Android支持设计库中的design\u navigation\u menu\u item.xml并修改您需要的内容(设置Android:ellipsize=“end”和Android
我是AndroidHive的教程。覆盖Android支持设计库中的design\u navigation\u menu\u item.xml并修改您需要的内容(设置
Android:ellipsize=“end”
和Android:maxLines=“2”
)
您的res/layout/design\u navigation\u menu\u 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>
<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>
<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" />
res/layout/activity_main.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>
<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>
<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" />
你不应该改变这一点
查看材料设计指南:只需在导航视图标签上添加app:itemMaxLines=“2”
属性,如下所示:
<?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>
<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>
<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" />
在NavigationDrawer中添加一个样式,将行数声明为“2”,如下所示:
<style name="NavigationDrawerStyle">
<item name="android:lines">2</item>
</style>
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" />
将样式添加到NavigationDrawer,然后在样式中包含两行
<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.
Nice。。在浪费了很多时间之后。找到解决办法了。谢谢回答:)谢谢。使用以下样式,我成功地显示了2行,而没有覆盖任何内容:2此解决方案过去运行良好。但是现在,当我构建应用程序时,design\u navigation\u menu\u item.xml
文件正在恢复到其原始版本。有人有解决办法吗?(顺便说一句,我已经尝试过离线构建应用程序,但徒劳无功)就个人而言,在某些情况下,我相信违反材料设计准则并不一定意味着糟糕的UI设计。为了支持@Kathir所说的,这就是一个这样的案例(在我的实施中),它们被称为“指南”而不是“规则”是有原因的。基本上:“这是你的应用程序,让它成为你自己的。这里有一些有用的指导方针来帮助你进行设计。请随意使用它们……或者不使用。”注意:正确的版本是1.1.0
,在1.0.0
材料库中没有这样的属性或方法