首页>Program>source

我正在尝试从右侧打开导航抽屉. (我设法使用LAyOUT_GRAVITy =" END"来做到这一点)。 现在,我希望所有菜单项都从右边开始,并且它们的图标也都从右边开始。

为此,我在清单中添加了(SUPPORTSRTL =" TRUE"),这也解决了问题.但这是问题所在:

  • if the device's language is set to English, everything works perfectly.
  • But if the device's language is set to Persian(which is a RTL language) then everything else in the app will be right to left. That means what ever I put in the right goes to left and what ever that is set to the left goes to the right. I even tried using "start" and "end" instead of "right" and "left" but that didn't solve the problem.

要解决这个问题,我必须将(LAyOUTDIRECTION =" LTR")设置为我的每一个动词的布局的根元素.这样就解决了问题,现在一切都在我想要的位置,但是,将这行代码添加到我将添加到应用程序的每个活动的根元素中,这似乎不是一个可持续的解决方案。 您能告诉我这是否是最好的方法吗?

我发现了具有相同主题的其他问题,但没有接受正确的答案。

最新回答
  • 7天前
    1 #

    这行代码应该可以解决您的问题

       ViewCompat.setLayoutDirection(drawer, ViewCompat.LAYOUT_DIRECTION_RTL);
    

    抽屉是对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
            android:name=".YourActivity"
            android:label="@string/title_activity_settings"
            android:theme="@style/ShaliRTL"
            android:screenOrientation="fullSensor" />
    

    祝你好运。

  • html:npm start:手动刷新浏览器以反映更改
  • xml:我在activitymainjava中找不到什么问题?