направление раскладки не работает в ConstraintLayout - PullRequest
1 голос
/ 12 октября 2019

Я хочу использовать один и тот же макет для арабского и английского с использованием ConstraintLayout. Когда я использую LinearLayout, ImageView и TextView выровнены по горизонтали и изменяют направление макета относительно языка. Но когда я использую ограничение для представления изображений и TextView не выравнивается справа налево на арабском языке.

скриншоты предварительного просмотра макета

предварительного просмотра на английском языке

предварительного просмотра на арабском языке

желаемый выводна арабском

Но я не получаю это при использовании 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>

1 Ответ

1 голос
/ 12 октября 2019

Выравнивание текста с правой стороны для 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"

setнаправление компоновки в кодировке

1) Узнайте идентификатор TextViews в onCreate ()

2), следуйте приведенному ниже коду

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

3) Применитесь согласно вашему тексту.

Я рекомендовал использовать 2 вида изображения и 2 вида текста в макете ограничения, когда вы хотите отобразить текст на английском языке, затем скрыть изображение и текст на правой стороне и показать изображение и текст на левой стороне для текста на арабском языке. сделать наоборот.

Попробуйте.

...