Android 布局在被“删除”后仍为LTR;强迫的;到RTL
我在我的应用程序中有各种布局,我添加了一个代码来更改语言,然后它更改了布局方向并执行了一些步骤,使用这些步骤,我的一些布局切换到RTL,但我有两个布局仍然处于LTR布局模式 我采取的步骤是: 在AndroidManiFest.xml中添加对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
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"