如何防止 FrameLayout 隐藏我的视图?

How can I prevent FrameLayout from shadowing my Views?

我的界面是这样的:

XML:

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

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:id="@+id/profile_fields_container"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/account_person_name_label" />

            <EditText
                android:id="@+id/person_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:minWidth="150dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="@string/account_person_emailId_label" />
            <EditText
                android:id="@+id/person_emailId"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textEmailAddress"
                android:minWidth="150dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="@string/account_person_phoneNo_label" />
            <EditText
                android:id="@+id/person_phoneNo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="phone"
                android:maxLength="10"
                android:minWidth="150dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="@string/account_person_password_label" />
            <EditText
                android:id="@+id/password"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:minWidth="150dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="@string/account_person_retypePassword_label" />
            <EditText
                android:id="@+id/retype_password"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:minWidth="150dp"/>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="20dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/learner_tutor_status_label" />

                <android.support.v7.widget.AppCompatSpinner
                    android:id="@+id/learner_tutor_status_spinner"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>

            </LinearLayout>

        </LinearLayout>

    </ScrollView>

    <!--Floating Button-->
    <Button
        android:id="@+id/create_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:text="@string/create_account_string"
        style="@style/Widget.AppCompat.Button.Colored"/>

</FrameLayout>

现在,您可以在底部看到 我来这里是为了...。这是一个下拉列表,当我选择其中一个选项时,我的代码动态地向层次结构添加了一些视图,但问题是它们不可见(不是全部;只是 我是a... 可见。)

我通过布局检查器检查了布局层次结构,发现层次结构仍然存在,但浮动按钮(创建帐户)遮住了它。

现在,我知道如果我用 LinearLayout 替换根 FrameLayout,它将是可见的,但问题是如果那样我会点击 EditText按钮,键盘将覆盖屏幕,同时覆盖创建帐户按钮。 我真的希望这个按钮一直显示在屏幕上。

有人知道我该如何解决这个问题吗?

您的布局不完全正确,因为您的浮动按钮一直隐藏在 ScrollView 的底部。您应该将 FrameLayout 替换为垂直 LinearLayout(就像您说的那样),然后在软键盘弹出 [=] 时指定 activity 的 window 行为AndroidManifest.xml 文件中 activity 元素中的 13=] 属性。如果您使用 android:windowSoftInputMode="adjustResize",window 将相应地调整大小并且该按钮应该始终可见。