如何在Android中的GridView中集中最后一行不均匀?

时间:2013-10-03 10:07:01

标签: android android-layout android-gridview

我有GridView,显示字母图片 会发生什么,每次在最后一行中都没有更少的字母表。 最后一行左对齐,看起来不太好 所以我想让最后一排在中心, 任何建议

我的GridView代码:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/grid_view"
    android:layout_width="fill_parent"
    android:layout_marginRight="20dp"
    android:layout_marginTop="20dp"
    android:layout_height="fill_parent"
    android:numColumns="auto_fit"
    android:columnWidth="70dp"
    android:horizontalSpacing="10dp"
    android:verticalSpacing="20dp"
    android:gravity="center"
    android:stretchMode="spacingWidthUniform" >  

</GridView>

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:0)

我有同样的问题,但我使用两个网格视图管理它,第一个gridview显示除最后一行之外的行,第二个gridview显示最后一行。这是实现我需要的最简单方法。 我还没有找到更好的解决方案。期待看到一个美好而简单的方式。

答案 1 :(得分:0)

你可以尝试使用隐形元素,它不是最有效的解决方案,但很简单,你可以放两个元素,一个在开头,一个在行的末尾,让它们不可见

答案 2 :(得分:0)

对于那些仍在寻找解决方案的人,这是我的看法,请创建一个TableLayout,然后为每个TableRow将其权重设置为android:weightSum="4",不要忘记添加android:gravity="center"

有关完整代码,请查看此gist以供参考。

答案 3 :(得分:-1)

您可以将网格行居中放在相对布局中,然后将android:layout_centerHorizontal="true"添加到字母ImageView中。假设他们是ImageView的。

所以你的GridView将包含在这样的内容中:

<RelativeLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_cotent"
    android:orientation="horizontal" >

    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/grid_view"
        android:layout_width="fill_parent"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:layout_height="fill_parent"
        android:numColumns="auto_fit"
        android:columnWidth="70dp"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="20dp"
        android:gravity="center"
        android:stretchMode="spacingWidthUniform" >  

    </GridView>
</RelativeLayout>

单个字母图像需要android:layout_centerHorizontal="true",如下所示:

<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
</ImageView>