小伙伴们怎么了,问个简单的问题。我试图让我的 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_centerHorizontal="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>