2 votes

Xamarin- Prise en charge de Rtl dans Xamarin.Android

J'ai besoin de soutenir Rtl dans mon application, voici ce que j'ai fait

Remplacer toutes les occurrences des attributs de mise en page contenant "left" et "right" par "start" et "end" respectivement. Par exemple, Android:paddingLeft doit devenir Android:paddingStart

Référence

Voici comment Android studio rend ma présentation xml

enter image description hereenter image description here

mon code xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/layout"
    android:orientation="vertical"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginLeft="22.3dp"
        android:layout_marginStart="22.3dp"
        android:layout_marginRight="15.3dp"
        android:layout_marginEnd="15.3dp"
        android:layout_marginTop="19dp">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="13.3sp"
            android:textColor="@color/bluey_grey"
            android:textAllCaps="true"
            android:text="@string/language" />
        <TextView
            android:id="@+id/languageText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="13.3sp"
            android:textColor="@color/orange_two"
            android:text="English" />
    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="15dp"
        android:background="@color/silver_two" />
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="18dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/notificationChk"
            android:layout_toStartOf="@+id/notificationChk"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:orientation="vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="13.3sp"
                android:textColor="@color/bluey_grey"
                android:textAllCaps="true"
                android:text="@string/push_notifications" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="11.7sp"
                android:textColor="@color/cool_grey"
                android:text="@string/pushNotificationDetails" />
        </LinearLayout>
        <android.support.v7.widget.AppCompatCheckBox
            android:id="@+id/notificationChk"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            app:buttonTint="@color/colorPrimary"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />
    </RelativeLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="15dp"
        android:background="@color/silver_two" />
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="18dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/newsLatterChk"
            android:layout_toStartOf="@+id/newsLatterChk"

            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:orientation="vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="13.3sp"
                android:textAllCaps="true"
                android:textColor="@color/bluey_grey"
                android:text="@string/newsletter" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="11.7sp"
                android:textColor="@color/cool_grey"

                android:text="@string/newsLetterDetails" />
        </LinearLayout>
        <CheckBox
            android:id="@+id/newsLatterChk"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />
    </RelativeLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="15dp"
        android:background="@color/silver_two" />
    <TextView
        android:text="Save"
        android:layout_marginTop="20dp"
        android:padding="10dp"
        android:textSize="14.7dp"
        android:textAllCaps="true"
        android:layout_gravity="center"
        android:gravity="center"
        android:textColor="@color/orange_three"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/saveBtn" />
    <TextView
        android:id="@+id/logoutBtn"
        android:text="@string/logout"
        android:textAllCaps="true"
        android:layout_marginTop="15dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textColor="@color/tomato" />
    <Space
        android:layout_width="wrap_content"
        android:layout_height="20dp" />
    </LinearLayout>
</LinearLayout>

mais lorsque je l'exécute dans xamarin, voici ce que j'obtiens enter image description here

Que me manque-t-il pour soutenir pleinement Rtl ?

voici mon post dans Forums Xamarin pour plus de détails sur mon problème

1voto

Mohamed Points 318

Vous utilisez encore des directions codées en dur (droite, gauche) dans certaines vues, je sais que c'est pour le support de l'API < 17 mais essayez de compiler sans cela.

Vous pouvez également utiliser le paramètre "layoutDirection" dans les vues

   android:layoutDirection = "locale"
   android:layoutDirection = "inherit"
   android:layoutDirection = "rtl"
   android:layoutDirection = "ltr"

Référence : Support RTL natif dans Android 4.2

0voto

Mina Fawzy Points 13122

Ce problème est dû au fait que mon sdk minimum est le 16, lorsque je suis passé au 17, cela fonctionne, il semble que ce soit un bug dans xamarin.

Mise à jour

vous pouvez garder minSdkVersion 16 comme vous le souhaitez, mais assurez-vous de définir targetSdkVersion jusqu'à 17 ans et plus

<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="25" />

Note Lorsque vous définissez la cible à partir du manifeste pour utiliser automatiquement la cible, elle n'est pas placée dans le manifeste et reste comme ça.

<uses-sdk android:minSdkVersion="16"  />

enter image description here

so set version manual

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X