android right-to-left

android - Establezca LayoutDirection(RTL) para una API inferior a 17



right-to-left (1)

Voy a construir una Persian app (RTL) . Mi aplicación incluye un ListView y un cajón de navegación.

Agregué en Manifest en la etiqueta de la aplicación android:supportsRtl="true"

y en el método onCreate() : getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

Sé que LayoutDirection para menos de 17 api no funciona.

para api nivel 17 y superior:

para api inferior a 17:

¿Cómo resuelvo este problema? 1- ¿Poner una conditional statement para verificar la API de Android y asignar un diseño en particular? 2-use folder layout-ldrtl en eclipse? 3 - ...? ¿¿Cuál es la mejor manera??

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/myback"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="40dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginLeft="60dp" android:layout_marginRight="60dp" android:layout_marginBottom="20dp" android:layout_marginTop="20dp" > <EditText android:id="@+id/edtxtsearch" android:layout_width="wrap_content" android:layout_height="40dp" android:layout_gravity="center_horizontal" android:hint="عبارت مورد جستجو" android:textSize="13dp" > <requestFocus /> </EditText> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="center" > <ListView android:id="@+id/mylist" android:layout_width="200dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:divider="@android:color/transparent" android:dividerHeight="7dp" android:scrollbarStyle="outsideInset" /> </LinearLayout> </LinearLayout> <FrameLayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> <ListView android:id="@+id/list_slidermenu" android:layout_width="240dp" android:layout_height="wrap_content" android:layout_gravity="start" android:choiceMode="singleChoice" android:background="#ffffff" android:dividerHeight="4dp" android:divider="@android:color/transparent" /> </android.support.v4.widget.DrawerLayout>


use ViewCompat desde android.support.v4.view.ViewCompat!

Me gusta esto :

ViewCompat.setLayoutDirection (View yourView, int layoutDirection)

layoutDirection es una constante de la clase ViewCompat