键盘推高我的视野

时间:2018-04-05 13:10:33

标签: android xml android-constraintlayout

我正在使用约束布局进行登录屏幕,因为我喜欢指南的响应性声音,但是当用户尝试使用编辑文本字段并弹出键盘时,我遇到的问题就出现了。

首先,我已经完成了清单中不同的“调整”方法。

  • AdjustNothing - 我的输入字段隐藏在键盘后面。
  • AdjustPan - 这有点起作用,它推动我的视图,所以 用户可以专注于所选择的内容,但是它非常迟钝。
  • AdjustResize-通过将所有内容推入到我的视图中来打破我的观点 可用空间。

在过去使用RelativeLayout时,我在滚动视图中嵌套了布局,使其与AdjustPan具有相同的效果,只是更顺畅。

然而,如果我对约束布局做同样的事情,指南会将我的屏幕尺寸拉伸到一个非常疯狂的大小,使得很多元素出现在屏幕外。

编辑:不确定这是否意味着什么,但如果我有没有父项的约束并将高度设置为wrap_context它会延伸并产生相同的效果,就像它嵌套在scrollview中一样。

以下是受影响布局的XML。

<ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.constraint.ConstraintLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:id="@+id/img_background"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_centerInParent="true"
                android:scaleType="centerCrop"
                android:src="@drawable/background"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.0" />

            <ImageView
                android:id="@+id/top_overlay"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:adjustViewBounds="true"
                android:background="@drawable/overlay"
                android:scaleType="fitCenter"
                app:layout_constraintBottom_toTopOf="@+id/top_guideline"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent" />

            <TextView
                android:id="@+id/lblWelcome"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:textColor="#ffffff"
                android:gravity="center"
                android:text="Welcome"
                android:textSize="30sp"
                app:layout_constraintBottom_toTopOf="@+id/top_guideline"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <android.support.constraint.Guideline
                android:id="@+id/right_guideline"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="32dp"
                android:orientation="vertical"
                app:layout_constraintGuide_percent="0.8" />

            <android.support.constraint.Guideline
                android:id="@+id/left_guideline"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="32dp"
                android:orientation="vertical"
                app:layout_constraintGuide_percent="0.2" />

            <android.support.constraint.Guideline
                android:id="@+id/top_guideline"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                app:layout_constraintGuide_percent="0.15" />

            <android.support.constraint.Guideline
                android:id="@+id/bottom_guideline"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                app:layout_constraintGuide_percent="0.9" />

            <ImageView
                android:id="@+id/ic_server"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/top_overlay"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="32dp"

                android:layout_toStartOf="@id/input_ip"
                android:src="@drawable/ic_server"
                app:layout_constraintEnd_toStartOf="@+id/input_ip"
                app:layout_constraintHorizontal_bias="0.97"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/input_guideline" />

            <EditText
                android:id="@+id/input_ip"
                android:layout_width="0dp"
                android:layout_height="45dp"
                android:layout_below="@+id/top_overlay"
                android:layout_centerInParent="true"
                android:digits="0123456789."
                android:hint="@string/input_ip"
                android:inputType="number"
                android:textColor="#ffffff"
                android:singleLine="true"
                app:layout_constraintEnd_toStartOf="@+id/right_guideline"
                app:layout_constraintLeft_toLeftOf="@+id/left_guideline"
                app:layout_constraintTop_toBottomOf="@+id/input_guideline" />

            <ImageView
                android:id="@+id/ic_user"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/top_overlay"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="32dp"
                android:layout_marginTop="22dp"
                android:layout_toStartOf="@id/input_username"
                android:src="@drawable/ic_user"
                app:layout_constraintEnd_toStartOf="@+id/input_ip"
                app:layout_constraintHorizontal_bias="1.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/ic_server" />


            <EditText
                android:id="@+id/input_username"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/input_ip"
                android:layout_marginTop="24dp"
                android:hint="@string/input_username"
                android:textColor="#ffffff"
                android:singleLine="true"
                app:layout_constraintEnd_toStartOf="@+id/right_guideline"
                app:layout_constraintLeft_toLeftOf="@+id/left_guideline"
                app:layout_constraintTop_toBottomOf="@+id/input_ip" />

            <ImageView
                android:id="@+id/ic_password"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/top_overlay"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="32dp"
                android:layout_marginTop="20dp"
                android:layout_toStartOf="@id/input_username"
                android:src="@drawable/ic_pword"
                app:layout_constraintEnd_toStartOf="@+id/input_ip"
                app:layout_constraintHorizontal_bias="1.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/ic_user" />

            <EditText
                android:id="@+id/input_password"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/input_ip"
                android:layout_marginTop="24dp"
                android:hint="@string/input_password"
                android:inputType="textPassword"
                android:singleLine="true"
                android:textColor="#ffffff"
                app:layout_constraintEnd_toStartOf="@+id/right_guideline"
                app:layout_constraintLeft_toLeftOf="@+id/left_guideline"
                app:layout_constraintTop_toBottomOf="@+id/input_username" />

            <android.support.v7.widget.AppCompatButton
                android:id="@+id/btn_Connect"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="24dp"
                android:background="@color/material_light_red"
                android:elevation="2dp"
                android:padding="12dp"
                android:text="Sign In"
                android:textColor="#ffffff"
                app:layout_constraintEnd_toStartOf="@+id/right_guideline"
                app:layout_constraintLeft_toLeftOf="@+id/left_guideline"
                app:layout_constraintTop_toBottomOf="@+id/input_password" />

            <ImageView
                android:id="@+id/bottom_overlay"
                android:layout_width="0dp"
                android:layout_height="60dp"
                android:background="@drawable/overlay"
                android:scaleType="fitCenter"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/bottom_guideline" />

            <ImageView
                android:id="@+id/bottom_logo"
                android:layout_width="329dp"
                android:layout_height="64dp"
                android:background="@drawable/logo"
                android:scaleType="fitCenter"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/logo_guideline"
                tools:layout_editor_absoluteY="558dp" />

            <android.support.constraint.Guideline
                android:id="@+id/input_guideline"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                app:layout_constraintGuide_percent="0.25" />

            <android.support.constraint.Guideline
                android:id="@+id/logo_guideline"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                app:layout_constraintGuide_percent="0.85" />

        </android.support.constraint.ConstraintLayout>

    </ScrollView>

2 个答案:

答案 0 :(得分:0)

尝试使用ScrollView&gt; LinearLayout作为父级布局

{p> android:windowSoftInputMode="stateHidden|adjustPan"

中的AndroidManifest
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="none">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="vertical">
    </LinearLayout>
</ScrollView>

答案 1 :(得分:-1)

只能在您的活动代码中的AndroidManifest中输入此行android:windowSoftInputMode="adjustPan"