在相对布局中的ImageView之后填充GridView的剩余空间

时间:2014-03-24 13:28:05

标签: android android-layout gridview relativelayout

我通过Gridview和ImageView在XML中查看,其中ImageView显示所选图像,gridview显示所有图像。

我有一个Imageview,可以说是300 dp的宽度和200 dp的高度,我使用下面的代码进行设置。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="match_parent"     
android:background="@drawable/bg">
<RelativeLayout 
android:id = "@+id/relative1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">    
<ImageView
   android:id="@+id/imageView1"
   android:layout_width="300dp"
   android:layout_height="200dp"
   android:adjustViewBounds="true"
   android:layout_alignParentLeft="true"
   android:src="@drawable/ic_launcher" />
</RelativeLayout>
 <GridView 
android:id="@+id/imageGallery"
android:paddingTop="10dp"
android:layout_below="@+id/relative1"
android:stretchMode="columnWidth"
android:cacheColorHint="#00000000"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clipChildren="true"
android:horizontalSpacing="5dip"
android:verticalSpacing="5dip"
android:numColumns="2"
android:fadeScrollbars ="false"
>  

现在我希望我的gridview在ImageView设置后占用所有剩余高度。因为我不希望底部有额外的空白。我知道我可以设置GridView以将底部与父对齐,但这看起来很奇怪。

3 个答案:

答案 0 :(得分:2)

使用重量<{1}}

LinearLayout

答案 1 :(得分:1)

以下是使用 RelativeLayout

执行此操作的方法
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg"
    >
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:adjustViewBounds="true"
        android:layout_alignParentLeft="true"
        android:src="@drawable/ic_launcher"
    />
    <GridView
        android:id="@+id/imageGallery"
        android:paddingTop="10dp"
        android:layout_below="@+id/imageView1"
        android:stretchMode="columnWidth"
        android:cacheColorHint="#00000000"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipChildren="true"
        android:horizontalSpacing="5dip"
        android:verticalSpacing="5dip"
        android:numColumns="2"
        android:fadeScrollbars ="false"
    >
</RelativeLayout>

请注意,我删除了围绕ImageView的无用的 RelativeLayout 在这里,GridView正在使用所有剩余空间来填充父级。

答案 2 :(得分:0)

覆盖所有屏幕使用&#34; android:layout_weight&#34;。像这样

<GridView
    android:id="@+id/imageGallery"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>