如何在屏幕上居中GridView

时间:2013-04-16 07:35:42

标签: android

如何在屏幕上居中GridView。我有GridView有4个项目,每行2个项目。我尝试使用相对布局中的填充将GridView置于Relative布局中。但我开发了多屏幕的应用程序。所以我认为硬编码填充不是好习惯。如何在多个屏幕上居中显示此网格视图?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/gridrelativelayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="60dp"
    android:paddingBottom="60dp"
    android:paddingLeft="150dp"
    android:paddingRight="150dp"
    tools:context=".MainMenuActivity" >

    <GridView
        android:id="@+id/gridview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#F9F9F9"
        android:gravity="center"
        android:horizontalSpacing="50dp"
        android:numColumns="2"
        android:stretchMode="columnWidth"
        android:verticalSpacing="50dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

更新代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/gridrelativelayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="150dp"
    android:paddingRight="150dp"
    tools:context=".MainMenuActivity" >

    <GridView
        android:id="@+id/gridview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:columnWidth="20dp"
        android:background="#FF0000"
        android:gravity="center"
        android:horizontalSpacing="50dp"
        android:numColumns="2"
        android:verticalSpacing="50dp"
        android:layout_centerInParent = "true" 
       />

</RelativeLayout>

此更新代码正确地在屏幕上显示gridView。但是看,我在相对布局中对左侧广告进行了硬编码填充。由于我想支持多个scrrens,我想使用以下代码将此填充变为动态。但它不起作用。

RelativeLayout gridrelativelayout = (RelativeLayout)findViewById(R.id.gridrelativelayout);
        int pad=gridrelativelayout.getWidth()/3;
        gridrelativelayout.setPadding(pad, 0, pad, 0);

4 个答案:

答案 0 :(得分:7)

申请RelativeLayout

 android:layout_width="match_parent"
 android:layout_height="match_parent"

GridView

android:layout_centerInParent = "true"

答案 1 :(得分:0)

android:layout_centerInParent = "true"使用GridView。这肯定有用......

答案 2 :(得分:0)

如果想要将最佳应用程序写入多个屏幕设备,那么您需要阅读:

Supporting Multiple Screens

对你非常有用:

Supporting Different Screens

答案 3 :(得分:0)

使用

android:layout_centerHorizontal = "true"

用于GridView。