导航视图多行文字

deq*_*c64 8 android multiline navigation-drawer

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

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

谢谢

use*_*678 20

覆盖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>
Run Code Online (Sandbox Code Playgroud)

但是,您应该简化文本以正确遵循Material Design准则.

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

  • styles.xml添加新样式
  • 将新样式设置为 NavigationView

res/values/styles.xml

<style name="TextAppearance">
    <item name="android:ellipsize">end</item>
</style>
Run Code Online (Sandbox Code Playgroud)

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" />
Run Code Online (Sandbox Code Playgroud)


Ahm*_*man 9

只需app:itemMaxLines="2"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" />
Run Code Online (Sandbox Code Playgroud)

注意:材料依赖性是——

implementation 'com.google.android.material.material:1.0.0'
Run Code Online (Sandbox Code Playgroud)


cha*_*lav 0

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