如何将线性布局内的imageview划分为不同的等份android

时间:2014-12-26 07:16:57

标签: android layout imageview

我在4个不同的LinearLayout

中使用了4个不同的RelativeLayout

4种不同的LinearLayout包含Imageview(1 imageview,2 imageview,3 imageview或4 imageview),具体取决于可供使用的图像数量具体布局。

我成功实现了1 imageview,2 imageview布局但无法获得3 imageview或4 imageview

我发布了预期的图片enter image description here

我尝试了QuiltView库 My Previous post ..没有达到预期的布局。

还尝试了StaggeredGridView ...库显示了很多错误...

因此应用我的自定义逻辑来获得预期的布局

 <RelativeLayout android:id="@+id/rel_news_grid_photos_3"
       android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dip" 
        android:layout_below="@+id/rel_news_grid_photos_2"
       >       

      <LinearLayout
    android:layout_width="match_parent" 
    android:layout_height="200dp"
    android:orientation="horizontal"
    android:padding="5dp"
    android:background="#FFFFFF">

    <ImageView 
        android:id="@+id/img_grid_3_1" 
        android:layout_width="0dp" 
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:src="@drawable/b" 
        android:scaleType="fitXY"/>

    <LinearLayout
    android:layout_width="match_parent" 
    android:layout_height="200dp"
    android:orientation="vertical"
    android:padding="5dp"
    android:background="#FFFFFF">


    <ImageView 
        android:id="@+id/img_grid_3_2" 
        android:layout_width="match_parent" 
        android:layout_height="0dp"
        android:layout_weight="1"
        android:src="@drawable/b" 
        android:scaleType="fitXY"
        android:layout_marginLeft="5dp"/> 
         <ImageView 
        android:id="@+id/img_grid_3_3" 
        android:layout_width="match_parent" 
        android:layout_height="0dp"
        android:layout_weight="1"
        android:src="@drawable/b" 
        android:scaleType="fitXY"
        android:layout_marginLeft="5dp"/>    

    </LinearLayout>

</LinearLayout>

    </RelativeLayout>

1 个答案:

答案 0 :(得分:1)

您应首先了解weightLinearLayout关系。以下代码适用于3个ImageView。

<RelativeLayout android:id="@+id/rel_news_grid_photos_3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dip" 
    android:layout_below="@+id/rel_news_grid_photos_2" 
    xmlns:android="http://schemas.android.com/apk/res/android">       

    <LinearLayout
        android:layout_width="match_parent" 
        android:layout_height="200dp"
        android:orientation="horizontal"
        android:weightSum="1"
        android:padding="5dp"
        android:background="#FFFFFF">

        <ImageView 
            android:id="@+id/img_grid_3_1" 
            android:layout_width="0dp" 
            android:layout_height="fill_parent"
            android:layout_weight="0.5"
            android:scaleType="fitXY"
            android:src="@drawable/b" />

        <LinearLayout
            android:layout_width="0dp" 
            android:layout_height="200dp"
            android:layout_weight="0.5"
            android:orientation="vertical"
            android:weightSum="1"
            android:padding="5dp"
            android:background="#FFFFFF">


            <ImageView 
                android:id="@+id/img_grid_3_2" 
                android:layout_width="match_parent" 
                android:layout_height="0dp"
                android:layout_weight="0.5"
                android:src="@drawable/b" 
                android:scaleType="fitXY"
                android:layout_marginLeft="5dp"/> 
            <ImageView 
                android:id="@+id/img_grid_3_3" 
                android:layout_width="match_parent" 
                android:layout_height="0dp"
                android:layout_weight="0.5"
                android:src="@drawable/b" 
                android:scaleType="fitXY"
                android:layout_marginLeft="5dp"/>    

        </LinearLayout>

    </LinearLayout>

</RelativeLayout>

修改 weightsum是当前LinearLayout的权重之和。例如,您的LinearLayout有2个子项,权重为0.5,因此权重将为1.如果未设置此参数,则默认值为1。