我正在构建的APP有一个登录屏幕,其中包含徽标,用户名的编辑文本,密码的编辑文本和登录按钮 .

以前我有一个ScrollView并使EditText singleline = true . 因此,用户可以输入详细信息并在键入时点击下一步 . 然后点击完成然后选择登录按钮或向下滑动以选择登录 .

但是,客户希望从登录页面中删除ScrollView . 因此,如果键盘已启动,则按钮和两个编辑文本始终位于屏幕底部或键盘上方的底部 .

我能够将按钮保持在顶部,但第二个EditText被覆盖,或者我已经设法将两个EditText保留在屏幕上,但随后按钮进入屏幕 . 如何阻止键盘覆盖登录页面的第二个EditText and 按钮?

以下是我的代码:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@+id/loginButton"
    android:orientation="vertical"
    android:layout_weight="1">

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/mainLogoImageView"
        android:src="@drawable/ic_logo_main"
        android:layout_alignParentRight="true"
        android:layout_alignParentLeft="true"
        android:layout_above="@+id/usernameEditText"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="false" />

</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_weight="0">

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/usernameEditText"
        android:hint="@string/username"
        android:layout_alignParentLeft="true"
        android:maxLines="1"
        android:singleLine="true"
        android:layout_alignParentRight="true"
        android:layout_above="@+id/passwordEditText"/>
</LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="0">
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/passwordEditText"
        android:hint="@string/password"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:singleLine="true"
        android:layout_alignParentRight="true"/>
    </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_weight="0">
    <ImageButton
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_signin"
            android:text="Sign In"
            android:id="@+id/loginButton"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:onClick="attemptLogin"
            android:background="@color/orange_button_bg"
            style="?android:attr/borderlessButtonStyle"
            android:layout_gravity="center_horizontal"/>
</LinearLayout>

我曾试图从另一个论坛问题的建议中使用线性加权: - Push button above soft keyboard

如果您遇到类似的问题,这些问题可能会有所帮助: