如何用ScrollView包装2个线性布局和一个相对布局?

时间:2016-10-22 17:43:19

标签: android scrollview

在添加Scrollview之前,我的布局在不同的设备上看起来非常好。我所拥有的是一行中的两个图像,以及每个图像右上角的复选框。但是,当我添加ScrollView时,复选框会移开,图像会显示在它们下面。下面是目前的代码:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fadeScrollbars="false"
            android:fillViewport="true"
            android:orientation="vertical">
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/linLay"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:orientation="vertical">


<!--ROW 1 -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:id="@+id/parentLayout"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:layout_marginTop="10dp">

            <RelativeLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1">

                <ImageView
                    android:id="@+id/img1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="10dp" />

                <CheckBox
                    android:id="@+id/checkBox1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentTop="true"
                    android:text=""
                    android:background="@android:color/white"/>



            </RelativeLayout>

            <RelativeLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1">


                <ImageView
                    android:id="@+id/img2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="10dp" />

                <CheckBox
                    android:id="@+id/checkBox2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentTop="true"
                    android:text=""
                    android:background="@android:color/white"/>

            </RelativeLayout>

        </LinearLayout>

    <!--Row2-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:layout_marginTop="10dp">

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/img3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp" />

            <CheckBox
                android:id="@+id/checkBox3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text=""
                android:background="@android:color/white"/>
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/img4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:layout_weight="1" />

            <CheckBox
                android:id="@+id/checkBox4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text=""
                android:background="@android:color/white"/>
        </RelativeLayout>
    </LinearLayout>

2 个答案:

答案 0 :(得分:0)

您可以使用include layout标记创建另一个xml并将其包含在滚动视图中。在android studio中创建新的滚动活动以查看相同的示例。

答案 1 :(得分:0)

问题在于每行中项目的权重参数。正如sanket pahuja所建议的那样,我将文件拆分为2.一个包含项目,另一个包含这样的布局。

item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="60dp"
    android:layout_height="wrap_content"
    >

    <ImageView
        android:id="@+id/img1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:src="@mipmap/ic_launcher"/>

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text=""
        />
</RelativeLayout>

另一个是layout_scroll

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fadeScrollbars="false"
    android:fillViewport="true"
    android:orientation="vertical">
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/linLay"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:orientation="vertical">


        <!--ROW 1 -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:id="@+id/parentLayout"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:layout_marginTop="10dp">
            <include layout="@layout/item1"/>
            <include layout="@layout/item1"/>
            </LinearLayout>
        <!--ROW 1 -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:id="@+id/parentLayout2"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:layout_marginTop="10dp">
            <include layout="@layout/item1"/>
            <include layout="@layout/item1"/>
        </LinearLayout>
    </LinearLayout>
</ScrollView>

您可以检查它是否有效。但是你将weight = 1添加到item1.xml相对布局中,当布局试图获得整个空间时,复选框会移开。