【问题标题】:Fill up the remaining space for GridView after a ImageView in Relative Layout为相对布局中的 ImageView 后的 GridView 填充剩余空间
【发布时间】:2014-03-24 13:28:05
【问题描述】:

我正在通过 XML 中的 Gridview 和 ImageView 制作视图,其中 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 设置为将底部与父级对齐,但这看起来很奇怪。

【问题讨论】:

    标签: android android-layout gridview android-relativelayout


    【解决方案1】:

    将LinearLayout 与权重一起使用

    <LinearLayout 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:orientation="vertical" >
    
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="300dp"
            android:layout_height="200dp"
            android:layout_alignParentLeft="true"
            android:adjustViewBounds="true"
            android:src="@drawable/ic_launcher" />
    
        <GridView
            android:id="@+id/imageGallery"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_below="@+id/relative1"
            android:layout_weight="1"
            android:cacheColorHint="#00000000"
            android:clipChildren="true"
            android:fadeScrollbars="false"
            android:horizontalSpacing="5dip"
            android:numColumns="2"
            android:paddingTop="10dp"
            android:stretchMode="columnWidth"
            android:verticalSpacing="5dip" />
    
    </LinearLayout>
    

    【讨论】:

    • 可惜权重只在线性布局中,
    • weightsum 功能怎么样?我不想在那个布局中使用 LinerLayout,因为我不能使用 android:layout_below 或 android:layout_above 属性...我使用了你的建议,它成功了
    【解决方案2】:

    这里是如何使用 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 周围的 useless RelativeLayout。
    这里 GridView 正在占用所有剩余空间来填充父级。

    【讨论】:

      【解决方案3】:

      要覆盖所有屏幕,请使用“android:layout_weight”。像这样

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-13
        • 1970-01-01
        • 1970-01-01
        • 2018-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多