从右侧启动GridView Elements

时间:2012-07-10 15:18:03

标签: android gridview

我正在创建一个应用程序,我希望从右到左填充gridview“使用它从右到左语言”,我试图将gridView引力设置为正确但它不起作用。 ..我的gridview布局如下。

提前致谢

<RelativeLayout
    android:id="@+id/grid_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/show_info"
    android:gravity="right" >

    <GridView
        android:id="@+id/channel_grid"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:columnWidth="90dp"
        android:gravity="right"
        android:horizontalSpacing="10dp"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
        android:verticalSpacing="10dp" >
    </GridView>
</RelativeLayout>

6 个答案:

答案 0 :(得分:5)

我认为您最好的猜测是复制GridView source中的代码并将测量/布局更改为从右到左使用。

更新:视图的布局方向仅在API级别17(4.2)中引入。 如果你比较4.24.1中的GridView.java,你可以看到,例如在方法makeRow()中,layoutDirection从4.2开始被考虑在内,所以应该可以工作!

您是否尝试在API级别17上使用android:layoutDirection="rtl"执行代码?

答案 1 :(得分:4)

我不认为GridView的设计考虑了语言。它更像是用于安排缩略图的可视组件。

您可以通过修改适配器并让它反转每行每个项目的顺序来解决该问题。但是,您需要告诉适配器每行的项目数量。

最重要的是,如果最后一行的项目少于可能的项目,那么你需要引入空的虚拟物品来填充左边。

答案 2 :(得分:3)

你可以试试这个。让布局文件中的GridView具有以下属性

android:layoutAnimation="@anim/layout_grid_right_to_left"

创建一个anim文件夹,其中添加layout_grid_right_to_left.xml cotents

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

同时在内容

的同一fade.xml文件夹中添加anim
<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" />

这些仅供您参考。请随意添加/删除符合您需求/要求的属性。

答案 3 :(得分:2)

你可以尝试

android:layoutDirection="rtl"

通常用于文本,我不知道对gridView的影响是什么。 (ref

要尝试的另一件事是

android:stackFromBottom="true"

但如果您需要自上而下和从右到左(ref

订购商品,它将无效

答案 4 :(得分:2)

您可以针对gridview及其所有XML项目尝试此操作:

 android:rotationY="180"

您也可以使用android:layoutDirection="rtl"。它可以解决你的问题。

答案 5 :(得分:1)

有一种愚蠢的方法可以做到这一点,但它完美无缺。

只需在gridview和商品容器(网格视图单元格的自定义视图)中设置android:ScaleX=-1,这样您的布局就会从右到左开始!

希望这个帮助