Android 设置api低于17的布局方向(RTL)

Android 设置api低于17的布局方向(RTL),android,right-to-left,Android,Right To Left,我将构建一个波斯应用程序(RTL)。 我的应用程序包括一个列表视图和一个导航抽屉 . 我在应用程序标签中添加了Manifest,android:supportsRtl=“true” 在onCreate()方法中:getWindow().getDecorView().setLayoutDirection(View.LAYOUT\u DIRECTION\u RTL) 我知道LayoutDirection对于少于17个api不起作用 对于api 17级及更高级别: 对于低于17的api: 我该如

我将构建一个
波斯应用程序(RTL)
。 我的应用程序包括一个列表视图和一个导航抽屉 .

我在应用程序标签中添加了
Manifest
android:supportsRtl=“true”

onCreate()
方法中:
getWindow().getDecorView().setLayoutDirection(View.LAYOUT\u DIRECTION\u RTL)

我知道
LayoutDirection
对于少于17个api不起作用

对于api 17级及更高级别:

对于低于17的api:

我该如何解决这个问题。1-使用
条件语句来检查android api并指定特定布局?在eclipse中使用文件夹
布局ldrtl
?3 - ... ? 最好的方法是什么

<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>

使用android.support.v4.view.ViewCompat中的ViewCompat

这样地:
layoutDirection是ViewCompat类中的一个常量,只需将要在textView中设置的每个字符串与
“\u202B”

它只是将文本强制为RTL

String textWhichIsLTR = "LTR or RTL text that you want to enforce to RTL";
String enforcedRTL = textWhichIsLTR + "\u202B";
fooTextView.setText(enforcedRTL);

我不确定是否有一个真正好的答案。对于布局,我倾向于使用区域设置或ldrtl文件夹。另见@QuantumTiger,它非常出色。我只想补充一点,在4.2之前,一些供应商(设备制造商和移动运营商)有时会为RTL布局和bi di文本提供定制解决方案。这在当时帮助他们将产品推向市场,并使一些预装应用程序能够提供合理的用户体验。但从今天的角度来看,这增加了碎片化:准备好发现你为AOSP 4.2调优的应用程序在三星Galaxy S2(ME ROM)或其他设备上会表现异常。@P.Rai的可能副本我知道layoutDirection在低于4.2的安卓系统上不受支持。我在问题的上下文中说过这一点。我的意思是,有没有其他方法可以设置正确的对齐导航抽屉?谢谢,但这段代码可以在Android 4.2和更高版本上运行?你确定吗?我已经使用了它的支持库!LayoutDirection未在api级别16及以下定义,因此我的应用程序中的DrawerLayout也将位于屏幕左侧。它根本不起作用。检查源代码-仅当API>=17时才执行任何代码。我真的很想知道这个答案怎么会有这么多优点,因为在这个主题中是关于低于17的API的信息。不适用于低于17的API:|
String textWhichIsLTR = "LTR or RTL text that you want to enforce to RTL";
String enforcedRTL = textWhichIsLTR + "\u202B";
fooTextView.setText(enforcedRTL);