我在我的XML布局文件中放置了一个GridView。
它在API 17-21上以英语(LTR)显示 但是,当我将语言转换为阿拉伯语(RTL)时,在API 17-19中忽略了horizontalSpacing,但在API 21上,它会按照我想要的方式显示。
在模拟器和真实的Android设备上发生了同样的行为。
XML代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/services_home_main_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/services_home_contents"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_above="@+id/services_home_bottom_layout">
<GridView
android:id="@+id/services_home_services_gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:horizontalSpacing="4dp"
android:verticalSpacing="4dp"
android:layout_margin="4dp"
android:gravity="center"
android:choiceMode="singleChoice" />
</LinearLayout>
<LinearLayout
android:id="@id/services_home_bottom_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
</RelativeLayout>
项目的XML代码:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/services_drawer_item_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:padding="4dp"
android:background="@color/Gray_CC"
android:drawableTop="@drawable/tall4"
android:text="@string/app_name" />
以下是阿拉伯语(RTL)用户界面的截图:
请注意第一个屏幕截图中的水平间距
答案 0 :(得分:4)
if(activity.getWindow().getDecorView().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL)
gridView.setHorizontalSpacing((int) -padding);
else
gridView.setHorizontalSpacing((int) padding);
答案 1 :(得分:3)
我有同样的问题,我试图解决它,但它只是没有按预期工作。如果您在清单中设置了RTL,则将GridView的布局方向设置为LRT并将180旋转。
答案 2 :(得分:0)
可以通过在包含 GridView 的布局中设置 android:layoutDirection =&#34; ltr&#34; 来修复此问题然后,您需要创建2个布局,一个用于 RTL ,另一个用于 LTR ,并检查您的适配器应使用哪种类型。
答案 3 :(得分:-1)
我试过这段代码
xml中的:
android:horizontalSpacing="4dp"
在java中:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)//V.17
{
gView.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP){ //V.21
gView.setHorizontalSpacing((int) -4);
}
}