Android布局:键盘弹出时按钮会移动

时间:2014-12-12 13:53:34

标签: android android-layout

当键盘弹出时,我的布局会发生变化。 具体来说,寄存器按钮向上移动并位于其中一个EditTexts之上。 我希望我的视图保持相同的大小,并且能够在键盘打开时在较小的视口中滚动它。 我尝试过android:windowSoftInputMode =" adjustResize" (按钮被移动)和" adjustPan" (按钮不会移动,但要看到按钮,首先必须关闭键盘)

我有以下xml文件:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffffff">
    <LinearLayout 
        android:id="@+id/register_header"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:padding="@dimen/activity_vertical_margin">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ... />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
           ... />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/register_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/register_header"
        android:padding="@dimen/activity_vertical_margin"
        android:orientation="vertical" >

        // Bunch of EditText's here


    </LinearLayout>
    <LinearLayout
        android:id="@+id/register_footer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center_vertical|bottom"
        android:orientation="vertical"
        android:padding="@dimen/activity_vertical_margin">

        <Button 
            android:padding="16dp"
            android:id="@+id/register_button_register"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/register" />

    </LinearLayout>

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

将此信息放入“活动标记”

下的清单中
 android:windowSoftInputMode="adjustNothing"

了解更多信息keyboard

答案 1 :(得分:0)

不使用RelativeLayout作为ScrollView的子项,而是使用像这样的LinearLayout

<ScrollView>
     <LinearLayout orientation="vertical">
       <LinearLayout orientation="vertical">
         <EditTexts />
       </LinearLayout>
       <Button />
    </LinearLayout>
<ScrollView>

当你有一个RelativeLayout和一个具有alignParentBottom = true的子节点时,那个子节点将始终位于屏幕的底部,在adjustResize情况下,它意味着在键盘上方和EditTexts上。