我的应用中有各种各样的布局,我已经添加了一个代码来更改语言,并且它改变了布局方向并执行了一些步骤,使用这些步骤我的一些布局切换到了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的方式正确无误很奇怪。
答案 0 :(得分:0)
通过“错误的方式”你的意思是布局元素是倒置的吗?如果是这样,您可以尝试一些事项:
1)支持RTL布局时,请远离包含左/右的xml属性,而是使用包含开始/结束&gt;
的那些例如: 而不是使用
android:layout_alignParentRight="true"
尝试:
android:layout_alignParentEnd="true"
2)尝试使用线性而不是相对布局。它们在RTL案例中更易于管理
答案 1 :(得分:0)
在将此行android:layoutDirection="rtl"
添加到您的顶级RelativeLayout
后,布局将被强制为RTL