1

小伙伴们怎么了,问个简单的问题。我试图让我的 GridView 在它的父级中居中,这是一个相对布局。我希望整个网格居中,而不是项目。据我所见,默认对齐方式是“左对齐”,很难改变这种行为。我尝试了在此处找到的其他 SO 问题以及其他几个问题中建议的其他一些解决方案。这似乎是一件微不足道的事情,而且不应该如此令人头疼。我尝试将 GridView 包装在具有水平方向的 LinearLayout 中,但无济于事。

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

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

这张图片是在我弄乱了填充之后,但又一次......似乎有点骇人听闻,并不是我真正想要的。我正在寻找没有侧面额外填充物的齐平中心

后

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

在此处输入图像描述

对此的任何帮助都会很棒,一如既往地感谢!

布局代码

<?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>

这是网格行的布局。如您所见,对我有用的是将方向设置为水平并将 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>
4

1 回答 1

0

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

于 2012-12-09T19:31:39.533 回答