Android 布局在被“删除”后仍为LTR;强迫的;到RTL

Android 布局在被“删除”后仍为LTR;强迫的;到RTL,android,android-layout,Android,Android Layout,我在我的应用程序中有各种布局,我添加了一个代码来更改语言,然后它更改了布局方向并执行了一些步骤,使用这些步骤,我的一些布局切换到RTL,但我有两个布局仍然处于LTR布局模式 我采取的步骤是: 在AndroidManiFest.xml中添加对RTL的支持 使用“开始/结束”而不是“左/右” 更改语言代码: Locale locale = new Locale("ar"); Locale.setDefault(locale); Configuration config = n

我在我的应用程序中有各种布局,我添加了一个代码来更改语言,然后它更改了布局方向并执行了一些步骤,使用这些步骤,我的一些布局切换到RTL,但我有两个布局仍然处于LTR布局模式

我采取的步骤是:

在AndroidManiFest.xml中添加对RTL的支持

使用“开始/结束”而不是“左/右”

更改语言代码:

    Locale locale = new Locale("ar");
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
截图:

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"

>



<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:layout_marginTop="2.5dp"
    android:layout_marginBottom="2.5dp"
    card_view:cardUseCompatPadding="true"
    android:id="@+id/cardView"
    android:foreground="?attr/selectableItemBackground"
    android:stateListAnimator="@anim/lift_on_touch">

    <RelativeLayout
        android:id="@+id/rvs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.pkmmte.view.CircularImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:id="@+id/episode_icon"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_margin="10dp"
            app:border_color="#EEEEEE"
            app:border_width="0dp"
            app:shadow="false" />


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="عنوان"
            android:id="@+id/episode_title"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@+id/episode_icon"
            android:layout_toStartOf="@+id/episode_icon"
            android:layout_marginRight="11dp"
            android:layout_marginEnd="11dp" />

    </RelativeLayout>

</android.support.v7.widget.CardView>



</RelativeLayout>

返回箭头和活动样式:

<style name="Detail" parent="AppTheme">
    <item name="toolbarStyle">@style/Widget.Toolbar</item>
</style>
<style name="Widget.Toolbar" parent="@style/Widget.AppCompat.Toolbar">
    <item name="navigationIcon">?attr/homeAsUpIndicator</item>
    <item name="android:background">?attr/colorPrimary</item>
</style>    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

@样式/Widget.Toolbar
?attr/homeAsUpIndicator
?属性/颜色初级
@颜色/原色
@颜色/原色暗
@颜色/颜色重音
假的
真的
在Android Studio中,在RTL视图模式下,这是正确的,但在实际测试中,箭头方向错误,项目方向错误,但晶圆厂方向正确,这很奇怪。

所谓“错误方向”,您的意思是布局元素颠倒了吗?如果是这样,您可以尝试以下几点:

1) 当支持RTL布局时,不要使用包含左/右的xml属性,而是使用包含Start/End>

例如: 而不是使用

    android:layout_alignParentRight="true"
尝试:


2) 尝试使用线性布局而不是相对布局。它们在RTL情况下更易于管理

将以下行添加到顶层后,布局将被强制为RTL:
android:layoutDirection=“RTL”

    android:layout_alignParentEnd="true"