在导航视图中显示文本右侧的图标
Posted
技术标签:
【中文标题】在导航视图中显示文本右侧的图标【英文标题】:Display the icon at the right of the text in navigation view 【发布时间】:2019-05-29 21:49:46 【问题描述】:对不起,我的英语不好。 我在某些活动中有一个导航抽屉,我希望将每个导航视图项的图标放置在该项目文本的右侧,并且整个项目获得正确的重力。 因为我只在我的应用程序中使用了波斯语,所以我不能在我的代码中使用“supportsRtl”,如果我使用,当我将设备语言设置为任何 rtl 语言时会看起来很奇怪。
我想也许我可以通过为导航视图设置自定义布局来解决这个问题,但我正在寻找一种更简单的方法。这是我的 NavigationView XML 代码:
<android.support.design.widget.NavigationView
android:layout_
android:layout_
app:menu="@menu/menu"
android:layout_gravity="end" />
已编辑:
layoutDirection 是一个很好的答案,但我使用了 drawerLayout.openDrawer(GravityCompat.START);
用于打开导航抽屉。现在,如果设备语言是 rtl 语言,这会使应用崩溃。
【问题讨论】:
尝试在导航抽屉中添加自定义Listview或RecylerView 谢谢,这是一个好方法,但在这种情况下,我需要一个项目布局和一个适配器类,...。我的代码会变得很长,只是为了解决这个 rtl 问题。我正在寻找更简单的方法或自定义库。 这可能对***.com/questions/33464416/…有帮助 没有supportsRtl
是不可能的
谢谢,但正如我之前提到的。这种方式需要很长的代码。但是真的没有其他方法可以做到这一点吗?
【参考方案1】:
将supportsRtl设为true,并将导航视图的布局方向设置为RTL,其他布局设置为LTR
【讨论】:
布局方向是一个很好的答案,但我使用了drawerLayout.openDrawer(GravityCompat.START);用于打开导航抽屉。现在,如果设备语言是 rtl 语言,这会使应用程序崩溃。我可以用一些解决方案来处理它吗? 感谢您的回答,我使用了gravityCompat.start,但我必须改用Gravity.Right。【参考方案2】:只需将android:layoutDirection="rtl"
添加到您的NavigationView
,如下所示:
<android.support.design.widget.NavigationView
android:layout_
android:layout_
app:menu="@menu/menu"
android:layoutDirection="rtl"
android:layout_gravity="end" />
【讨论】:
以上是关于在导航视图中显示文本右侧的图标的主要内容,如果未能解决你的问题,请参考以下文章