android - 在屏幕上显示gridview

时间:2013-12-06 14:06:04

标签: android android-layout

我有一个活动,其布局由:

组成
  • 标题
  • 一个gridview
  • 一个页脚

我希望网格位于屏幕的中心,但是当我启动应用程序时,它立即位于标题下方,并且由于它包含少量元素,因此屏幕的其余部分直到页脚为空。 我想在某种程度上将网格更多地移动到中心以补偿这种空洞。

这是布局的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/gridrelativelayout"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient">

    <!--  Header -->
    <LinearLayout
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:background="@color/header" >

        <!-- Logo -->
        <ImageView 
            android:src="@drawable/header"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="top"/>
        <!-- /Logo -->

    </LinearLayout>
    <!-- /Header -->

    <LinearLayout
        android:id="@+id/grid_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/header"
        android:layout_above="@+id/footer"
        android:orientation="vertical" >

        <GridView
            android:id="@+id/grid_dashboard"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:columnWidth="5dp"
            android:horizontalSpacing="5dp"
            android:numColumns="2"
            android:stretchMode="columnWidth"
            android:verticalSpacing="20dp" />

    </LinearLayout>

    <!--  Footer -->
    <LinearLayout
        android:id="@+id/footer"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="55dp"
        android:layout_alignParentBottom="true"
        android:background="@color/header" >

        <!-- Logo -->
        <ImageView 
            android:src="@drawable/rainbow_footer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
           <!-- /Logo -->


    </LinearLayout>
    <!-- /Footer -->

    <LinearLayout 
        android:id="@+id/buttons"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="55dp"
        android:layout_below="@+id/grid_layout"
        android:layout_alignParentRight="true">

        <ImageButton
            android:id="@+id/button_yt"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/yout" />

        <ImageButton
            android:id="@+id/button_fb"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/fb" />

        <ImageButton
            android:id="@+id/button_email"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/email" />

        </LinearLayout>
</RelativeLayout>

有什么建议吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

尝试以下

对于网格视图部分

  <LinearLayout
        android:id="@+id/grid_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/header"
        android:layout_above="@+id/footer"
        android:layout_gravity="center_horizontal"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

        <GridView
            android:id="@+id/grid_dashboard"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:columnWidth="5dp"
            android:layout_gravity="center_horizontal"
            android:horizontalSpacing="5dp"
            android:numColumns="2"
            android:stretchMode="columnWidth"
            android:verticalSpacing="20dp" />

    </LinearLayout>

答案 1 :(得分:0)

您的线性布局需要使用match_parent或fill_parent取决于屏幕的大小(取决于它的位置)(假设您将网格视图放在屏幕中间)。

在这个线性布局的内部创建你的GridView,它将设置为wrap_content,你的layout_gravity必须设置为center,而不是center_horizo​​ntal。