布局方向在ConstraintLayout中不起作用

时间:2019-10-12 05:41:03

标签: android android-constraintlayout

我想使用ConstraintLayout对阿拉伯语和英语使用相同的布局。 当我使用LinearLayout时,ImageView和TextView水平对齐,并根据语言更改布局方向。但是,当我使用constraintlayout时,图像视图和TextView在阿拉伯语中未从“右到左”对齐。

布局预览屏幕截图

preview in english

preview in arabic

desired output in Arabic

但是使用ConstraintLayout时我没有得到这个

<?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/rootView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:background="@color/white"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/ic_launcher_2"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:text="@string/work_name"
            app:layout_constraintBottom_toBottomOf="@+id/imageView"
            app:layout_constraintStart_toEndOf="@+id/imageView"
            app:layout_constraintTop_toTopOf="@+id/imageView" />

    </androidx.constraintlayout.widget.ConstraintLayout>

2 个答案:

答案 0 :(得分:1)

  

为TextView从右侧对齐文本

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:text="@string/work_name"
        android:gravity="center|right"
        app:layout_constraintBottom_toBottomOf="@+id/imageView"
        app:layout_constraintStart_toEndOf="@+id/imageView"
        app:layout_constraintTop_toTopOf="@+id/imageView" />

android:gravity =“ center | right”

  

设置编码方向

1)在onCreate()中找到TextViews id

2)遵循以下代码

textview.setGravity(Gravity.CENTER|Gravity.RIGHT);
OR
textview.setGravity(Gravity.CENTER|Gravity.LEFT);

3)根据您的文字申请。

我建议您在约束布局中使用2个图像视图和2个文本视图,以便显示英文文本,然后隐藏右侧图像和文本,并显示左侧图像和阿拉伯文本的文本,反之亦然

尝试一下。

答案 1 :(得分:0)

如果你想让整个项目的阿拉伯语布局与英语布局一样,那么添加这行清单:

    <application
    android:supportsRtl="false"

我建议您为从右到左的每种语言制作一个单独的 XML 文件。 请注意从右到左的语言短代码,如 (-ar, -fa, -ps, -sd, -ur) ,如果您有更多的阿拉伯语到左码,请告诉我们。