导航视图多行文字

时间:2016-04-19 21:39:01

标签: android navigation-drawer multiline

我的应用程序带有DrawerLayout的导航视图。我在菜单中添加了编程项目,因为我通过网络收到信息。但有时候,一个项目名称可能会非常长,即使有了椭圆形图标也会被切断,并且#34; ..."

有人知道如何为菜单项设置多行吗?

由于

7 个答案:

答案 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指南。

你不得覆盖任何东西只是椭圆化文本:

  • styles.xml
  • 添加新样式
  • 将新样式设置为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)

查看此answer。默认的Android幻灯片菜单不是很灵活,很可能您必须创建自定义视图 我真的是来自AndroidHive的this教程。

答案 3 :(得分:0)

我有同样的问题,我尝试过尝试过,Menu没有进展,我不能说这是不可能的,但我找不到办法让{{1}行。

但如果您不坚持使用MenuItem,我建议您在布局中使用MenuListView,如下所示:

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项)提供了更大的灵活性。  如果我的回答不够明确,请告诉我。

结果如下:

enter image description here

答案 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" />