如何添加在相对布局后面滚动的 ScrollView

how di add a ScrollView that scrolls behind a relative layout

我有一个父级 RelativeLayout,它在屏幕的上半部分包含一个 ScrollView,在屏幕的下半部分包含另一个 RelativeLayout。目前他们在三星 A5 等较小的设备上遇到的地方有点混乱。如何让我的 ScrollView 不与 RelativeLayout 重叠?在此处输入代码另外,如何让 RelativeLayout 在键盘打开时消失?

Virual Device with SamsungA5 screen specs

下面是我的layout.xml

    <?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.ConfigActivity">


    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@layout/config_panel">

        <RelativeLayout
            android:id="@+id/form_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">


            <TextView
                android:id="@+id/textLabelConfig"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="5dp"
                android:text="Serial Setup:"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/labelSerialBaud"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/textLabelConfig"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:text="Baud Rate:" />

            <EditText
                android:id="@+id/editSerialBaud"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@id/textLabelConfig"
                android:layout_marginLeft="125dp"
                android:layout_marginTop="10dp"
                android:ems="10"
                android:inputType="textNoSuggestions"
                android:text="9600" />

            <TextView
                android:id="@+id/labelSerialBits"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSerialBaud"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:text="Bit setup:" />

            <EditText
                android:id="@+id/editSerialBits"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSerialBaud"
                android:layout_marginLeft="125dp"
                android:layout_marginTop="10dp"
                android:ems="10"
                android:inputType="textNoSuggestions"
                android:text="8n1" />


            <CheckBox
                android:id="@+id/checkBox485"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSerialBits"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="10dp"
                android:text="RS485" />

            <CheckBox
                android:id="@+id/checkBox232"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSerialBits"
                android:layout_marginLeft="100dp"
                android:layout_marginTop="10dp"
                android:text="RS232" />


            <TextView
                android:id="@+id/textLabelGSM"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/checkBox485"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="5dp"
                android:text="GSM Setup:"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/labelSim1APN"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/textLabelGSM"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:text="SIM1 APN:"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/editSim1APN"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@id/textLabelGSM"
                android:layout_marginLeft="125dp"
                android:layout_marginTop="5dp"
                android:ems="10"
                android:inputType="textNoSuggestions"
                android:text="" />

            <TextView
                android:id="@+id/labelSim1User"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSim1APN"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:text="APN Username:" />

            <EditText
                android:id="@+id/editSim1User"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSim1APN"
                android:layout_marginLeft="125dp"
                android:layout_marginTop="5dp"
                android:ems="10"
                android:inputType="textNoSuggestions"
                android:text="" />

            <TextView
                android:id="@+id/labelSim1Passwd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSim1User"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:text="APN Password:" />

            <EditText
                android:id="@+id/editSim1Passwd"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSim1User"
                android:layout_marginLeft="125dp"
                android:layout_marginTop="10dp"
                android:ems="10"
                android:inputType="textNoSuggestions"
                android:text="" />

            <!--- Sim 2 -->

            <TextView
                android:id="@+id/labelSim2APN"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSim1Passwd"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="30dp"
                android:text="SIM2 APN:"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/editSim2APN"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSim1Passwd"
                android:layout_marginLeft="125dp"
                android:layout_marginTop="15dp"
                android:ems="10"
                android:inputType="textNoSuggestions"
                android:text="" />

            <TextView
                android:id="@+id/labelSim2User"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSim2APN"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:text="APN Username:" />

            <EditText
                android:id="@+id/editSim2User"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSim2APN"
                android:layout_marginLeft="125dp"
                android:layout_marginTop="5dp"
                android:ems="10"
                android:inputType="textNoSuggestions"
                android:text="" />

            <TextView
                android:id="@+id/labelSim2Passwd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSim2User"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="20dp"
                android:text="APN Password:" />

            <EditText
                android:id="@+id/editSim2Passwd"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_below="@id/labelSim2User"
                android:layout_marginLeft="125dp"
                android:layout_marginTop="5dp"
                android:ems="10"
                android:inputType="textNoSuggestions"
                android:text="" />
        </RelativeLayout>
    </ScrollView>
    <RelativeLayout
        android:id="@+id/lower_layout"
        android:layout_width="match_parent"
        android:layout_height="155dp"
        android:alpha="1.0"
        android:layout_alignParentBottom="true">

        <include layout="@layout/config_panel" />

        <Button
            android:id="@+id/buttonAdvConfig"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_marginRight="10dp"
            android:layout_marginBottom="5dp"
            android:text="@string/text_advanced" />
    </RelativeLayout>
</RelativeLayout>

目前您的 ScrollView 适合整个屏幕,android:layout_above="@layout/config_panel" 是 no-op,因为 config_panel 没有为 [=11] 的任何 child 设置 ID =]s parent (它放得更深)。你可能应该在 lower_layout 上方对齐(此视图位于 XML 中的 ScrollView 下方,两者具有相同的 parent)

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@layout/lower_layout">