GridLayout(非GridView):如何通过xml创建具有不同高度的项目

时间:2014-05-15 05:12:14

标签: android android-layout android-view android-gridlayout

我有像这样的视图的片段

enter image description here

在这个网格布局中,我的项目必须像这样排列

enter image description here

你可以看到物品有不同的高度。甚至每行之间的空间也不同。我试图通过给出行间距来实现这一点。但我所有的逻辑都出错了

我引用这些链接:Link 1Link 2Link 3

但我的想法并没有帮助我。任何人都可以建议我如何实现这个

编辑:接受答案后

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.35">

</LinearLayout>

<GridLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:orientation="horizontal"
    android:rowCount="20"
    android:columnCount="1">

    <LinearLayout
        android:layout_row="0"
        android:layout_gravity="fill">
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="Name"
            android:gravity="left"
            android:layout_weight="1"/>

        <EditText
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="EditText"
            android:gravity="center"
            android:layout_weight="1"/>
        <Space 
            android:layout_width="45dp"
            android:layout_height="match_parent"/>
    </LinearLayout>
    <Space
        android:layout_row="1"
        android:layout_gravity="fill"
        android:layout_rowSpan="1"/>
    <LinearLayout
        android:layout_row="3"
        android:layout_gravity="fill"
        android:layout_rowSpan="4">
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="Address"
            android:gravity="left"
            android:layout_weight="1"/>

        <EditText
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:lines="4"
            android:text="EditText"
            android:gravity="center"
            android:layout_weight="1"
           />

        <Space 
            android:layout_width="45dp"
            android:layout_height="match_parent"/>
    </LinearLayout>
    <Space
        android:layout_row="7"
        android:layout_gravity="fill"/>
    <LinearLayout
        android:layout_row="8"
        android:layout_gravity="fill">
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="Email"
            android:gravity="left"
            android:layout_weight="1"/>


        <EditText
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="EditText"
            android:gravity="center"
            android:layout_weight="1"/>
        <ImageView android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:paddingLeft="30dp"
            android:src="@android:drawable/arrow_up_float"/>

    </LinearLayout>
    <Space
        android:layout_row="9"
        android:layout_gravity="fill"/>
    <LinearLayout
        android:layout_row="10"
        android:layout_gravity="fill"
        android:layout_rowSpan="6">
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="About Me"
            android:gravity="left"
            android:layout_weight="1"/>

        <EditText
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:lines="5"
            android:text="EditText"
            android:gravity="center"
            android:layout_weight="1"/>
        <Space 
            android:layout_width="45dp"
            android:layout_height="match_parent"/>
    </LinearLayout>
    <Space
        android:layout_row="16"
        android:layout_gravity="fill"
        android:layout_rowSpan="3"/>
    <LinearLayout
        android:layout_row="19"
        android:layout_gravity="fill">
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="Nick Name"
            android:gravity="left"
            android:layout_weight="1"/>

        <EditText
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="EditText"
            android:gravity="center"
            android:layout_weight="1"/>
      <ImageView android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:paddingLeft="30dp"
            android:src="@android:drawable/arrow_up_float"/>
    </LinearLayout>

</GridLayout>

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.30">

</LinearLayout>

2 个答案:

答案 0 :(得分:1)

// Try this way,hope this will help solve your problem...

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.35">

    </LinearLayout>

    <GridLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:rowCount="20"
        android:columnCount="1">

        <LinearLayout
            android:layout_row="0"
            android:layout_gravity="fill">
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="Name"
                android:gravity="left"
                android:layout_weight="1"/>

            <EditText
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="EditText"
                android:gravity="center"
                android:layout_weight="1"/>
        </LinearLayout>
        <Space
            android:layout_row="1"
            android:layout_gravity="fill"
            android:layout_rowSpan="1"/>
        <LinearLayout
            android:layout_row="3"
            android:layout_gravity="fill"
            android:layout_rowSpan="4">
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="Address"
                android:gravity="left"
                android:layout_weight="1"/>

            <EditText
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:lines="4"
                android:text="EditText"
                android:gravity="center"
                android:layout_weight="1"/>
        </LinearLayout>
        <Space
            android:layout_row="7"
            android:layout_gravity="fill"/>
        <LinearLayout
            android:layout_row="8"
            android:layout_gravity="fill">
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="Email"
                android:gravity="left"
                android:layout_weight="1"/>

            <EditText
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="EditText"
                android:gravity="center"
                android:layout_weight="1"/>
        </LinearLayout>
        <Space
            android:layout_row="9"
            android:layout_gravity="fill"/>
        <LinearLayout
            android:layout_row="10"
            android:layout_gravity="fill"
            android:layout_rowSpan="6">
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="About Me"
                android:gravity="left"
                android:layout_weight="1"/>

            <EditText
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:lines="5"
                android:text="EditText"
                android:gravity="center"
                android:layout_weight="1"/>
        </LinearLayout>
        <Space
            android:layout_row="16"
            android:layout_gravity="fill"
            android:layout_rowSpan="3"/>
        <LinearLayout
            android:layout_row="19"
            android:layout_gravity="fill">
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="Nick Name"
                android:gravity="left"
                android:layout_weight="1"/>

            <EditText
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="EditText"
                android:gravity="center"
                android:layout_weight="1"/>
        </LinearLayout>

    </GridLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.30">

    </LinearLayout>

</LinearLayout>

答案 1 :(得分:0)

//您需要使用wieghtsum

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="20dp"
    android:orientation="horizontal"

    android:weightSum="125" >

    <View
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="35" />

    <GridLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="65" />

    <View
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="30" />

</LinearLayout>