如何使中间的 LinearLayout 可滚动

How to make middle LinearLayout scrollable

在我的代码中,我有 3 个 LinearLayouts,我想让中间的一个可以滚动,以便可以看到整个信息。

目前我的代码如下所示:

patient_home_page.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/profileBlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/imageViewPatientPicture"
            android:layout_width="75dp"
            android:layout_height="75dp"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:layout_weight="0"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/profile_pic" />

        <TextView
            android:id="@+id/textViewPatientName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_weight="0"
            android:fontFamily="sans-serif"
            android:paddingLeft="20dp"
            android:text="Anakin Skywalker" />

    </LinearLayout>

    <ScrollView
        android:id="@+id/infoBlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/profileBlock"
        android:layout_above="@id/graphInfoBlock"
        android:layout_marginLeft="10dp"
        android:orientation="vertical"
        android:fillViewport="true">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/textViewDOB"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:layout_weight="1"
                android:text="Date of Birth: 26/08/1963" />

            <TextView
                android:id="@+id/textViewGender"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:paddingTop="5dp"
                android:text="Gender: Male" />

            <TextView
                android:id="@+id/textViewMedication"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:paddingTop="5dp"
                android:text="Current Medication: - " />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:paddingTop="5dp">

                <TextView
                    android:id="@+id/textViewObservation"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:maxLines="1"
                    android:text="Observations:" />

                <TextView
                    android:id="@+id/textViewObservatonsInput"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:paddingLeft="5dp"
                    android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer mollis nulla eu scelerisque ultricies. Etiam varius iaculis purus, et ullamcorper lectus tincidunt et. Nullam vel felis eu dolor condimentum dignissim. Vestibulum in tristique nulla. Mauris elit nibh, ullamcorper in imperdiet sed, luctus vitae nibh. Aliquam nisi nisi, mattis vitae cursus id, dignissim sollicitudin risus. Nam sed egestas mauris, sed scelerisque quam. Morbi sapien turpis, vestibulum at lacus vel, lacinia vehicula elit. Maecenas et lobortis felis. Vivamus elementum ut tortor efficitur iaculis. Vestibulum vestibulum dolor ut urna facilisis eleifend. Nulla gravida mattis eros sit amet molestie. Cras pellentesque sodales tortor, id efficitur neque ultrices at. Pellentesque lacus quam, euismod a dui et, ullamcorper luctus magna. Mauris semper sem vel neque hendrerit, hendrerit elementum nibh sodales." />
            </LinearLayout>

        </LinearLayout>
    </ScrollView>

    <LinearLayout
        android:id="@+id/graphInfoBlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">

        <com.jjoe64.graphview.GraphView
            android:id="@+id/graphPressure"
            android:layout_width="275dp"
            android:layout_height="275dp" />

        <ListView
            android:id="@+id/listViewGraphValues"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

</LinearLayout>

这在 ScrollView 的 layout_above 部分给我一个错误,其中指出以下内容:

"Error:(47, 35) No resource found that matches the given name (at 'layout_above' with value '@id/graphInfoBlock')."

这很奇怪,因为 graphInfoBlock 就在下面定义。我试过在没有 layout_above 设置的情况下这样做,但它似乎不起作用。

Here's a link to what it looks like without the layout_above setting

有什么建议吗?

制作根布局 RelativeLayout 以便使用 layout_above 或 layout_below 并使用 RelativeLayout 属性调整视图或布局的位置。据我所知,您不能在 LinearLayout 中使用 layout_above 或此类属性。

我只对你的代码做了一些小改动,只是粘贴它并尝试

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">

<LinearLayout
    android:id="@+id/profileBlock"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/imageViewPatientPicture"
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_weight="0"
        android:scaleType="fitXY"
        app:srcCompat="@drawable/profile_pic" />

    <TextView
        android:id="@+id/textViewPatientName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="0"
        android:fontFamily="sans-serif"
        android:paddingLeft="20dp"
        android:text="Anakin Skywalker" />

</LinearLayout>

<ScrollView
    android:id="@+id/infoBlock"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/graphInfoBlock"
    android:layout_below="@id/profileBlock"
    android:layout_marginLeft="10dp"
    android:fillViewport="true"
    android:orientation="vertical"
    android:layout_weight="1">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textViewDOB"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:text="Date of Birth: 26/08/1963" />

        <TextView
            android:id="@+id/textViewGender"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingTop="5dp"
            android:text="Gender: Male" />

        <TextView
            android:id="@+id/textViewMedication"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingTop="5dp"
            android:text="Current Medication: - " />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:paddingTop="5dp">

            <TextView
                android:id="@+id/textViewObservation"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:maxLines="1"
                android:text="Observations:" />

            <TextView
                android:id="@+id/textViewObservatonsInput"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:paddingLeft="5dp"
                android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer mollis nulla eu scelerisque ultricies. Etiam varius iaculis purus, et ullamcorper lectus tincidunt et. Nullam vel felis eu dolor condimentum dignissim. Vestibulum in tristique nulla. Mauris elit nibh, ullamcorper in imperdiet sed, luctus vitae nibh. Aliquam nisi nisi, mattis vitae cursus id, dignissim sollicitudin risus. Nam sed egestas mauris, sed scelerisque quam. Morbi sapien turpis, vestibulum at lacus vel, lacinia vehicula elit. Maecenas et lobortis felis. Vivamus elementum ut tortor efficitur iaculis. Vestibulum vestibulum dolor ut urna facilisis eleifend. Nulla gravida mattis eros sit amet molestie. Cras pellentesque sodales tortor, id efficitur neque ultrices at. Pellentesque lacus quam, euismod a dui et, ullamcorper luctus magna. Mauris semper sem vel neque hendrerit, hendrerit elementum nibh sodales." />
        </LinearLayout>

    </LinearLayout>
</ScrollView>

<LinearLayout
    android:id="@+id/graphInfoBlock"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal">

    <com.jjoe64.graphview.GraphView
        android:id="@+id/graphPressure"
        android:layout_width="275dp"
        android:layout_height="275dp" />

    <ListView
        android:id="@+id/listViewGraphValues"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

</LinearLayout>

将您的替换为以下内容:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="true"
android:orientation="vertical">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/profileBlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/imageViewPatientPicture"
            android:layout_width="75dp"
            android:layout_height="75dp"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:layout_weight="0"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/profile_pic" />

        <TextView
            android:id="@+id/textViewPatientName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_weight="0"
            android:fontFamily="sans-serif"
            android:paddingLeft="20dp"
            android:text="Anakin Skywalker" />

    </LinearLayout>

    <ScrollView
        android:id="@+id/infoBlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/graphInfoBlock"
        android:layout_below="@+id/profileBlock"
        android:layout_marginLeft="10dp"
        android:fillViewport="true"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/textViewDOB"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:layout_weight="1"
                android:text="Date of Birth: 26/08/1963" />

            <TextView
                android:id="@+id/textViewGender"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:paddingTop="5dp"
                android:text="Gender: Male" />

            <TextView
                android:id="@+id/textViewMedication"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:paddingTop="5dp"
                android:text="Current Medication: - " />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:paddingTop="5dp">

                <TextView
                    android:id="@+id/textViewObservation"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:maxLines="1"
                    android:text="Observations:" />

                <TextView
                    android:id="@+id/textViewObservatonsInput"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:paddingLeft="5dp"
                    android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer mollis nulla eu scelerisque ultricies. Etiam varius iaculis purus, et ullamcorper lectus tincidunt et. Nullam vel felis eu dolor condimentum dignissim. Vestibulum in tristique nulla. Mauris elit nibh, ullamcorper in imperdiet sed, luctus vitae nibh. Aliquam nisi nisi, mattis vitae cursus id, dignissim sollicitudin risus. Nam sed egestas mauris, sed scelerisque quam. Morbi sapien turpis, vestibulum at lacus vel, lacinia vehicula elit. Maecenas et lobortis felis. Vivamus elementum ut tortor efficitur iaculis. Vestibulum vestibulum dolor ut urna facilisis eleifend. Nulla gravida mattis eros sit amet molestie. Cras pellentesque sodales tortor, id efficitur neque ultrices at. Pellentesque lacus quam, euismod a dui et, ullamcorper luctus magna. Mauris semper sem vel neque hendrerit, hendrerit elementum nibh sodales." />
            </LinearLayout>

        </LinearLayout>
    </ScrollView>

    <LinearLayout
        android:id="@+id/graphInfoBlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">

        <com.jjoe64.graphview.GraphView
            android:id="@+id/graphPressure"
            android:layout_width="275dp"
            android:layout_height="275dp" />

        <ListView
            android:id="@+id/listViewGraphValues"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

</LinearLayout>

试试这个……它会起作用的……

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/profileBlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/imageViewPatientPicture"
            android:layout_width="75dp"
            android:layout_height="75dp"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:layout_weight="0"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/profile_pic3" />

        <TextView
            android:id="@+id/textViewPatientName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_weight="0"
            android:fontFamily="sans-serif"
            android:paddingLeft="20dp"
            android:text="Anakin Skywalker" />

    </LinearLayout>

    <ScrollView
        android:id="@+id/infoBlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/profileBlock"
        android:layout_above="@id/graphInfoBlock"
        android:layout_marginLeft="10dp"
        android:orientation="vertical"
        android:fillViewport="true">

        <!-- -->

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TextView
                android:id="@+id/textViewDOB"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:layout_weight="1"
                android:text="Date of Birth: 26/08/1963" />

            <TextView
                android:id="@+id/textViewGender"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:paddingTop="5dp"
                android:text="Gender: Male" />

            <TextView
                android:id="@+id/textViewMedication"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:paddingTop="5dp"
                android:text="Current Medication: - " />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:paddingTop="5dp">

                <TextView
                    android:id="@+id/textViewObservation"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:maxLines="1"
                    android:text="Observations:" />

                <TextView
                    android:id="@+id/textViewObservatonsInput"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:paddingLeft="5dp"
                    android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer mollis nulla eu scelerisque ultricies. Etiam varius iaculis purus, et ullamcorper lectus tincidunt et. Nullam vel felis eu dolor condimentum dignissim. Vestibulum in tristique nulla. Mauris elit nibh, ullamcorper in imperdiet sed, luctus vitae nibh. Aliquam nisi nisi, mattis vitae cursus id, dignissim sollicitudin risus. Nam sed egestas mauris, sed scelerisque quam. Morbi sapien turpis, vestibulum at lacus vel, lacinia vehicula elit. Maecenas et lobortis felis. Vivamus elementum ut tortor efficitur iaculis. Vestibulum vestibulum dolor ut urna facilisis eleifend. Nulla gravida mattis eros sit amet molestie. Cras pellentesque sodales tortor, id efficitur neque ultrices at. Pellentesque lacus quam, euismod a dui et, ullamcorper luctus magna. Mauris semper sem vel neque hendrerit, hendrerit elementum nibh sodales." />
            </LinearLayout>

        </LinearLayout>
    </ScrollView>

    <LinearLayout
        android:id="@+id/graphInfoBlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">

        <com.jjoe64.graphview.GraphView
            android:id="@+id/graphPressure"
            android:layout_width="275dp"
            android:layout_height="275dp" />

        <ListView
            android:id="@+id/listViewGraphValues"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

</RelativeLayout>