2012-07-10 64 views
8

我正在制作一个应用程序,我希望从右到左填充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> 

回答

4

我不认为GridView控件的设计铭记的语言。它更像是安排缩略图的可视化组件。

您可以通过修改适配器并让其颠倒每行每个项目的顺序来解决该问题。但是,您需要告诉适配器每行的项目数量才能完成这项工作。

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

+1

实际上,它从4.2开始考虑'layoutDirection'。我用一些额外的链接更新了我的答案。 – Jelle 2013-08-29 08:01:36

+0

这是一个很好的提示,谢谢。在我的应用程序中,gridView具有固定数量的列,这样我就可以模拟rtl方向。 – 2014-05-27 10:02:47

2

您可以尝试

android:layoutDirection="rtl" 

它通常是文字,我不知道什么是对一个GridView的影响。 (ref

另一件事是尝试

android:stackFromBottom="true" 

但是如果你需要订购的物品自上而下和从右到左(ref

+0

stackFromBottom是我首先想到的,但它没有帮助。 – user1940676 2013-08-22 15:36:25

+0

错误:找不到包'android'中属性'layoutDirection'的资源标识符 – 2013-09-23 13:42:39

+0

删除该答案 – 2013-09-23 13:43:02

5

我认为它不会工作您最好的猜测是复制GridView source中的代码,并将测量/布局更改为从右向左使用。

更新:视图的布局方向仅在API级别17(4.2)中引入。 如果您在4.24.1比较GridView.java,你可以看到,例如在方法makeRow()中,是的layoutDirection自4.2考虑,所以应该努力!

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

+0

是的我已经尝试了API 17上的rtl,它没有做到这一点。 – user1940676 2013-08-29 18:47:18

3

你可以试试这个。有你的GridView在布局文件有下列属性

android:layoutAnimation="@anim/layout_grid_right_to_left" 

创建anim文件夹,其中您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" /> 

添加layout_grid_right_to_left.xml此外,在同一anim文件夹内容添加fade.xml

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

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

2

可以在XML尝试一下本作你的GridView及其所有项目:

android:rotationY="180" 

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

+1

完美ans.thanks :) – Jas 2015-11-02 08:28:17

1

有一个愚蠢的做法,但它的工作完美。

只是在gridview和项目容器(网格视图单元格的自定义视图)中制作android:ScaleX=-1,因此您的布局将从右向左开始!

希望这个帮助

+0

大声笑。它的工作原理是android:ScaleX =“ - 1”。 – 2016-07-23 11:10:05