难以在RelativeLayout中居中GridView

时间:2012-12-09 19:07:32

标签: android gridview relativelayout

怎么了家伙,只是一个简单的问题。我试图让我的GridView成为其父亲的中心,这是一个RelativeLayout。我希望整个网格居中,而不是项目。从我所看到的,默认对齐是“左对齐”,并且很难改变这种行为。我尝试了其他SO问题中提出的其他一些解决方案here以及其他问题。这似乎是微不足道的事情,它应该不是那么令人头痛。我尝试在水平方向的LinearLayout中包装GridView,但无济于事。

我发现的唯一的半解决方法是弄乱左右填充,但即使这种方法也会留下太多的空白空间。

此图像在我更改填充之前 BEFORE

这张图片是在我用填充物搞砸之后,但是再次......看起来有点hackish而不是我正在寻找的东西。我正在寻找没有额外填充物的冲洗中心

AFTER

这种方法不切实际的另一个原因是由于额外的空间,选择器看起来太大了......如下图所示

enter image description here

对此的任何帮助都会很棒,谢谢!

布局代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/weatherFragRoot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<GridView
    android:id="@+id/menuGridView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:background="@drawable/weathermate_lv_background"
    android:gravity="center_horizontal"
    android:listSelector="@drawable/list_selector"
    android:numColumns="3"
    android:paddingLeft="30dp"
    android:paddingRight="5dp"
    android:stretchMode="columnWidth"
    android:visibility="invisible" >
</GridView>

</RelativeLayout>

修改

根据用户的建议,我将每个网格项目行集中在它自己的相对布局中......这给了我正在寻找的结果!以下是反映解决方案的更新XML文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/weatherFragRoot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<GridView
    android:id="@+id/menuGridView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:background="@drawable/weathermate_lv_background"
    android:gravity="center_horizontal"
    android:listSelector="@drawable/list_selector"
    android:numColumns="3"
    android:stretchMode="columnWidth"
    android:visibility="invisible" >
</GridView>

</RelativeLayout>

这是网格行的布局。正如你所看到的,对我有用的是将方向设置为Horizo​​ntal,并为每个孩子添加android:layout_centerHorizo​​ntal =“true”。

 <?xml version="1.0" encoding="utf-8"?>

<ImageView
    android:id="@+id/menuItem"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:background="@android:drawable/ic_menu_add" >
</ImageView>

<TextView
    android:id="@+id/tvMenuItemName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/menuItem"
    android:layout_centerHorizontal="true"
    android:text="Option"
    android:textColor="@android:color/white" >
</TextView>

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

答案是将每个网格中的图像和文本视图居中,因为它们具有单独的布局:)