18

我正在开发一个阿拉伯语版本的 android 应用程序。

在其中一个界面中,我有 gridView。因此,要以正确的顺序显示项目,我必须在 GridView 中从右到左显示项目(并且从上到下)。为此,我尝试在 GridView 中添加这些属性:

android:gravity="right"
android:layout_gravity="right"

不幸的是,项目仍然从左到右显示。

任何想法以正确的方式做到这一点?

4

6 回答 6

49

您可以通过这个丑陋的解决方法来实现这一点:

  1. 将此行添加到 XML 格式的 GridView 中:

    机器人:旋转Y =“180”

  2. 还将同一行添加到 XML 中的 GridView 项:

    机器人:旋转Y =“180”

总的来说,它为您提供了 360° 的旋转,因此看起来 GridView 从右到左放置项目。

于 2013-09-12T12:36:20.063 回答
7

将此行添加到 XML 格式的 GridView 中:

android:layoutDirection="rtl"
于 2016-08-28T23:05:45.387 回答
2

根据traninho的回答:

  1. 将此行添加到 XML 格式的 GridView 中:

    机器人:旋转Y =“180”

  2. 还将同一行添加到 XML 中的 GridView 项:

    机器人:旋转Y =“180”

请执行下列操作:

  • 在您的 GridActivity 上,删除以下内容:

        gridView.setOnClickListener(...);
    
  • 现在,转到您的 gridAdapter 并将 onClickListener 添加到 gridImage 中,您的代码应如下所示:

        gridImage.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
    
                    //Do something
    
                }
            });
    

这将正常处理 GridView 图像上的点击。

希望有帮助:)

于 2014-03-25T14:25:12.483 回答
1

正如 Nibha Jain 所说,这是正确的。您还需要向 GridView xml 添加一个属性“android:layoutAnimation”,如下所示。

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/grid"    
    android:layoutAnimation="@anim/layout_grid_right_to_left"

您还需要定义一个带有“android:direction”属性的动画文件,它实际上会从右到左或任何支持的方向呈现您的项目。

anim 文件夹中的 layout_grid_right_to_left.xml 文件

<gridLayoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:columnDelay="0.5"
    android:directionPriority="row"
    android:direction="right_to_left"
    android:animation="@anim/fade" />

@anim/fade 如下

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/accelerate_interpolator"
   android:fromAlpha="0.0" android:toAlpha="1.0"
   android:duration="@android:integer/config_longAnimTime" />

这只是我的喜好。请添加/删除适合您需求的属性。玩它。

于 2013-07-24T10:12:54.717 回答
0

创建一个新的 layout-ldrtl 文件夹并制作 XML 文件网格视图。例如...

  <GridView
        android:id="@+id/popoulat_category_list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollingCache="true"
        android:smoothScrollbar="true"
        android:numColumns="2"
        android:scrollbars="none"
        android:horizontalSpacing="-5dp"
        android:verticalSpacing="-5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginStart="5dp"
        android:layout_marginEnd="5dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"/>

设备本地语言为英语: 在此处输入图像描述

设备本地语言是波斯语: 在此处输入图像描述

于 2017-03-03T10:06:51.720 回答
0

除了上面的答案:

android:layoutDirection="rtl"

理想情况下,如果你想让它知道 rtl,那么只在它应该在的语言环境中使用 rtl:

android:layoutDirection="locale"

您还可以使其遵循包含布局

android:layoutDirection="inherit"
于 2017-12-08T12:04:31.113 回答