如何将具有固定列宽的单列GridView水平居中?

时间:2014-04-09 14:28:30

标签: android android-gridview

我有一个GridView,它在较小的设备上有一个列,我想确保列始终居中,同时保持固定的列宽(即不使用stretchMode="columnWidth")。

以下是GridView上当前的相关属性:

android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="230dp"
android:numColumns="1"
android:padding="48dp"
android:stretchMode="spacingWidth"
android:verticalSpacing="24dp"

网格看起来(有点 - 借口我的系统用户界面的时髦表示),如下所示:

enter image description here

基本上,该列以左对齐方式显示。有没有什么方法可以让单个列出现在屏幕的中心,理想情况下使用XML?

我已经尝试了以下内容,它们对外观没有任何影响:

  • GridView包含在ViewGroup的子类中,例如RelativeLayoutFrameLayout,将ViewGroup的高度和宽度设置为match_parent和GridView到wrap_content
    • 在尝试上述操作时包含layout_centerHorizontal="true"android:gravity="center_horizontal"作为GridView的属性
  • 设置stretchMode="none"
  • 设置horizontalSpacing="0dp"

1 个答案:

答案 0 :(得分:0)

这是一个例子。我认为它会解决你的问题。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <GridView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"
        android:gravity="center_horizontal"
        android:columnWidth="230dp"
        android:numColumns="1"
        android:padding="48dp"
        android:stretchMode="spacingWidth"
        android:verticalSpacing="24dp" >
    </GridView>
</RelativeLayout>