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