如何防止FrameLayout遮挡我的视图?

时间:2017-05-22 19:08:11

标签: android android-layout android-framelayout

我的界面如下所示:

enter image description here

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>

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

我通过布局检查器检查了布局层次结构,结果显示层次结构处于活动状态但是浮动按钮(创建帐户)已经盖过了它。

现在,我知道如果要用[{1}}替换根FrameLayout,它会显示但问题是如果那时我会点击LinearLayout按钮,键盘将覆盖屏幕,同时覆盖创建帐户按钮。 我实际上希望此按钮始终显示在屏幕上。

有谁能解决这个问题?

1 个答案:

答案 0 :(得分:0)

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