我想在NavigationView的菜单项中设置android:ellipsize =“end”。在我目前的实现中,当菜单项中的文本太长时,它只是在最后切割。这是我到目前为止所尝试的:
<android.support.design.widget.NavigationView
app:itemTextAppearance="@style/AppTheme.Widget.NavigationView.TextAppearance"
android:id="@+id/navigation"
style="@style/AppTheme.Widget.NavigationView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/drawer_view"/>
<style name="AppTheme.Widget.NavigationView" parent="Widget.Design.NavigationView">
<item name="android:textAppearance">@style/AppTheme.Widget.NavigationView.TextAppearance</item>
<item name="android:background">@color/drawer_background</item>
<item name="itemTextColor">@color/color_drawer_item</item>
<item name="itemIconTint">@color/color_drawer_item</item>
</style>
<style name="AppTheme.Widget.NavigationView.TextAppearance">
<item name="android:ellipsize">end</item>
<item name="android:maxLines">1</item>
</style>
修改
此处描述了另一种可能的解决方案:Android NavigationView : not show full item and not truncate
答案 0 :(得分:6)
向 styles.xml 添加新样式:
res / values / styles.xml
<style name="TextAppearance">
<item name="android:ellipsize">end</item>
</style>
将新样式设置为NavigationView
:
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 :(得分:1)
这个问题分为两部分 - 椭圆形长名称和maxLines表示非常长的名称。 正如另一个答案中所提到的,ellipsize很简单。创建一种风格:
<style name="NavigationMenuItemTextAppearance">
<item name="android:ellipsize">end</item>
</style>
将此样式添加到NavigationView:
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_gravity="start"
app:headerLayout="@layout/nav_drawer_header"
app:menu="@menu/menu_nav_drawer"
app:itemTextColor="@color/textColorPrimary"
app:theme="@style/NavigationMenuItemTextAppearance">
</android.support.design.widget.NavigationView>
要设置您允许显示名称的行数,可以通过覆盖布局文件来完成:design_navigation_menu_item.xml。虽然根据材料设计指南,很长的菜单选项material design navigation drawer
只允许使用1行只需将支持库复制到您自己的design_navigation_menu_item.xml中,然后放入布局文件夹即可。更改maxLines =&#34; 2&#34;
<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:maxLines="2"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"/>