在波斯语、希伯来语设备的导航抽屉左侧放置菜单图标的最佳做法?
Best practice to place menu Icons on the left side of the navigation drawer in Persian,Hebrew devices?
我想要一个从右侧打开的导航抽屉。 (我设法使用 LAYOUT_GRAVITY="END" 做到了这一点)。
现在我希望所有菜单项都从右边开始,它们的图标也从右边开始。
为此,我将 (SUPPORTSRTL="TRUE") 添加到清单中,这也解决了问题。但问题是:
- 如果设备的语言设置为英语,则一切正常。
- 但是,如果设备的语言设置为波斯语(这是一种 RTL 语言),则应用中的所有其他内容将从右到左排列。这意味着我放在右边的东西会变成左边,而放在左边的东西会变成右边。我什至尝试使用“开始”和“结束”而不是“右”和“左”,但这并没有解决问题。
为了解决这个问题,我必须将 (LAYOUTDIRECTION="LTR") 设置为我的每个活动的布局的根元素。这解决了问题,现在一切都在我想要的位置,但是这似乎不是将这行代码添加到我将添加到我的应用程序的每个 activity 的根元素的可持续解决方案。
你能告诉我这是否是最好的方法吗?
我发现其他相同主题的问题没有被接受的正确答案。
这行代码应该可以解决您的问题
ViewCompat.setLayoutDirection(drawer, ViewCompat.LAYOUT_DIRECTION_RTL);
drawer 是对您的 DrawerLayout 的引用。
将 RTL 布局强制用于活动的另一种方法是使用样式 xml。我会这样做:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="ShaliRTL" parent="AppTheme">
<item name="android:layoutDirection">rtl</item>
</style>
</resources>
然后在 android 清单中将此新样式 (ShaliRTL) 应用到您的特定 activity:
<activity
android:name=".YourActivity"
android:label="@string/title_activity_settings"
android:theme="@style/ShaliRTL"
android:screenOrientation="fullSensor" />
祝你好运。
我想要一个从右侧打开的导航抽屉。 (我设法使用 LAYOUT_GRAVITY="END" 做到了这一点)。 现在我希望所有菜单项都从右边开始,它们的图标也从右边开始。
为此,我将 (SUPPORTSRTL="TRUE") 添加到清单中,这也解决了问题。但问题是:
- 如果设备的语言设置为英语,则一切正常。
- 但是,如果设备的语言设置为波斯语(这是一种 RTL 语言),则应用中的所有其他内容将从右到左排列。这意味着我放在右边的东西会变成左边,而放在左边的东西会变成右边。我什至尝试使用“开始”和“结束”而不是“右”和“左”,但这并没有解决问题。
为了解决这个问题,我必须将 (LAYOUTDIRECTION="LTR") 设置为我的每个活动的布局的根元素。这解决了问题,现在一切都在我想要的位置,但是这似乎不是将这行代码添加到我将添加到我的应用程序的每个 activity 的根元素的可持续解决方案。 你能告诉我这是否是最好的方法吗?
我发现其他相同主题的问题没有被接受的正确答案。
这行代码应该可以解决您的问题
ViewCompat.setLayoutDirection(drawer, ViewCompat.LAYOUT_DIRECTION_RTL);
drawer 是对您的 DrawerLayout 的引用。
将 RTL 布局强制用于活动的另一种方法是使用样式 xml。我会这样做:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="ShaliRTL" parent="AppTheme">
<item name="android:layoutDirection">rtl</item>
</style>
</resources>
然后在 android 清单中将此新样式 (ShaliRTL) 应用到您的特定 activity:
<activity
android:name=".YourActivity"
android:label="@string/title_activity_settings"
android:theme="@style/ShaliRTL"
android:screenOrientation="fullSensor" />
祝你好运。