布局后仍然是LTR"强迫"到RTL

时间:2016-06-07 09:27:17

标签: android android-layout

我的应用中有各种各样的布局,我已经添加了一个代码来更改语言,并且它改变了布局方向并执行了一些步骤,使用这些步骤我的一些布局切换到了RTL ,但我仍然处于LTR布局模式的2个布局。

我做的步骤:

  

在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());

屏幕截图:Here

布局:

<?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>

Back Arrow&amp;活动风格:

<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>

在Android Studio中,在RTL查看模式下,它是正确的,但在实际测试中,箭头方向错误,项目方式错误,但FAB的方式正确无误很奇怪。

2 个答案:

答案 0 :(得分:0)

通过“错误的方式”你的意思是布局元素是倒置的吗?如果是这样,您可以尝试一些事项:

1)支持RTL布局时,请远离包含左/右的xml属性,而是使用包含开始/结束&gt;

的那些

例如: 而不是使用

    android:layout_alignParentRight="true"

尝试:

    android:layout_alignParentEnd="true"

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

答案 1 :(得分:0)

在将此行android:layoutDirection="rtl"添加到您的顶级RelativeLayout后,布局将被强制为RTL