Почему расположение фрагмента / действия выглядит плохо при смене языка устройства на язык RTL? - PullRequest
0 голосов
/ 26 марта 2020

Я создал приложение (для практики Android), и я использую start , end , чтобы поддерживать оба LTR и RTL языков. Я также установил android: supportRtl = "true" в файле манифеста. Когда устройство установлено на LTR язык, весь текст выглядит великолепно, а выравнивание - влево. Но , при изменении языка устройства на RTL , весь текст кажется плохим и не выровнен по правому краю (возможно, некоторые из TextView являются выравниванием, а некоторые не). Кроме того, кажется, что Spinner view полностью Wrong . Я приложил два снимка экрана (для обоих языков). Я прошу вашей помощи, потому что я не понимаю, что я делаю неправильно. Также прилагаются 3 фрагмента кода (один для всего макета, второй для элемента внутри RecyclerView и третий элемент для Spinner:

    <?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/backgroundColor">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:layout_marginStart="3dp"
        android:layout_marginTop="5dp"
        android:layout_marginEnd="3dp"
        android:background="@null"
        android:dropDownWidth="120dp"
        android:dropDownVerticalOffset="96dp"
        android:gravity="center"
        android:visibility="invisible"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <com.example.currencyconvertor.MultiButton
        android:id="@+id/multiButton"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginTop="15dp"
        app:activeButtonIndex="0"
        app:backgroundSelector="@drawable/multi_button_background_selector"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/spinner"
        app:numOfButtons="2"
        app:reversedOrder="false"
        android:visibility="gone"
        app:textColorSelector="@drawable/multi_button_text_color" />


    <TextView
        android:id="@+id/textView1"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="3dp"
        android:layout_marginTop="22dp"
        android:textColor="@color/titleTextColor"
        android:textSize="13sp"
        app:layout_constraintEnd_toStartOf="@id/textView2"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/multiButton"
        tools:text="TextView1" />


    <TextView
        android:id="@+id/textView2"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:text="Symbol"
        android:textColor="@color/titleTextColor"
        android:textSize="13sp"
        app:layout_constraintEnd_toStartOf="@id/textView3"
        app:layout_constraintStart_toEndOf="@id/textView1"
        app:layout_constraintTop_toTopOf="@id/textView1"
        tools:text="TextView2" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:textColor="@color/titleTextColor"
        android:textSize="13sp"
        app:layout_constraintEnd_toStartOf="@id/textView4"
        app:layout_constraintStart_toEndOf="@id/textView2"
        app:layout_constraintTop_toTopOf="@id/textView1"
        app:layout_goneMarginEnd="3dp"
        tools:text="TextView3" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="3dp"
        android:textColor="@color/titleTextColor"
        android:textSize="13sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/textView3"
        app:layout_constraintTop_toTopOf="@id/textView1"
        android:visibility="gone"
        tools:text="TextView4" />


    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="3dp"
        android:layout_marginTop="7dp"
        android:layout_marginEnd="3dp"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/textView1"
        tools:listitem="@layout/relative_currency_rate_row" />

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxHeight="200dp"
        android:maxWidth="200dp"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/textView1" />
</androidx.constraintlayout.widget.ConstraintLayout>

Код для элемента RecyclerView:

  <?xml version="1.0" encoding="utf-8"?>

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_marginBottom="1dp"
    android:background="@color/rowColor"

    xmlns:app="http://schemas.android.com/apk/res-auto">


        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/container"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toStartOf="@id/targetCountryTextView"
            app:layout_constraintHorizontal_chainStyle="spread_inside"
            tools:ignore="MissingConstraints">


                <ImageView android:id="@+id/countryFlagImageView"
                    android:layout_width="32dp"
                    android:layout_height="32dp"
                    app:layout_constraintStart_toStartOf="@id/container"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintBottom_toBottomOf="parent"
                    android:src="@drawable/ic_launcher_background"
                    android:paddingEnd="4dp" />

                <TextView
                    android:id="@+id/currencyTextView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    app:layout_constraintStart_toEndOf="@id/countryFlagImageView"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintBottom_toBottomOf="parent"
                    android:layout_marginStart="2dp"
                    android:layout_marginTop="13dp"
                    android:layout_marginBottom="12dp"
                    android:textSize="13sp"
                    android:text="USA"
                    android:textColor="@color/currencyRowTextColor"/>
        </androidx.constraintlayout.widget.ConstraintLayout>

        <TextView
            android:id="@+id/targetCountryTextView"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toEndOf="@id/container"
            app:layout_constraintEnd_toStartOf="@id/rateTextView"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_marginTop="13dp"
            android:layout_marginBottom="12dp"
            android:textSize="13sp"
            android:text="Dollar"
            android:textColor="@color/currencyRowTextColor" />


        <TextView
            android:id="@+id/rateTextView"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toEndOf="@id/targetCountryTextView"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_marginTop="13dp"
            android:layout_marginBottom="12dp"
            android:textSize="13sp"
            android:text="0.417"
            android:textColor="@color/currencyRowTextColor"  />

</androidx.constraintlayout.widget.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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/rowColor">

    <ImageView
        android:id="@+id/flagImageView"
        android:layout_width="48dp"
        android:layout_height="48dp"
        app:layout_constraintEnd_toStartOf="@+id/countryTextView"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:padding="4dp"
        app:srcCompat="@drawable/default_glag"
        android:textColor="@color/currencyRowTextColor"/>

    <TextView
        android:id="@+id/countryTextView"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toEndOf="@id/flagImageView"
        android:layout_marginStart="30dp"
        android:gravity="center"
        android:textSize="17sp"
        android:textColor="@color/currencyRowTextColor"/>

    <TextView
        android:id="@+id/currencyTextView"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toEndOf="@id/countryTextView"
        android:layout_marginStart="5dp"
        android:gravity="center"
        android:text="countryCurrencyTextView"
        android:textSize="17sp"
        android:textColor="@color/currencyRowTextColor"/>

    <ImageView
        android:layout_width="48dp"
        android:layout_height="48dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginEnd="4dp"
        android:src="@mipmap/ic_arrow_drop_down"/>
</androidx.constraintlayout.widget.ConstraintLayout>[![enter image description here][1]][1]

ltr

rtl

1 Ответ

0 голосов
/ 05 апреля 2020

отключить поддержку RTL для вашего файла манифеста:

<application
    ...
    android:supportsRtl="false"> 

Я надеюсь, что будет полезно;)

...