【问题标题】:Constraint Layout ListView is moving when keyboard appears键盘出现时约束布局ListView正在移动
【发布时间】:2018-06-28 13:04:10
【问题描述】:

我正在制作一个会自动显示联系人的应用程序,然后当在ListView 内单击联系人时,它会直接发送到EditText 字段。然后他们可以选择是发送消息还是拨打该号码。

问题是当我点击EditText 时,ListView 也会出现,其中包括EditText、按钮和联系人标签。我猜是因为手机的键盘。

XML 文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/idLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/backgroundwallpaper2"
    android:orientation="vertical">

    <TextView
        android:id="@+id/contacts"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="@string/contacts"
        android:textAlignment="center"
        android:textColor="#000000"
        android:textSize="15pt"
        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.293" />

    <EditText
        android:id="@+id/number"
        android:layout_width="match_parent"
        android:layout_height="51dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:inputType=""
        android:labelFor="@+id/number"
        android:textColor="#000000"
        android:textSize="25sp"
        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.05" />

    <ImageButton
        android:id="@+id/callBtn"
        android:layout_width="57dp"
        android:layout_height="57dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:background="@null"
        android:contentDescription="@string/todo"
        android:text="@string/calls"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.729"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.184"
        app:srcCompat="@drawable/smallcallbtn" />

    <ListView
        android:id="@+id/idList"
        android:layout_width="match_parent"
        android:layout_height="290dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        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.743"></ListView>

    <ImageButton
        android:id="@+id/imageButton5"
        android:layout_width="57dp"
        android:layout_height="57dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:background="@null"
        android:contentDescription="@string/todo"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.26"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.184"
        app:srcCompat="@drawable/smallmsgbtn" />

</android.support.constraint.ConstraintLayout>

应用截图

【问题讨论】:

    标签: android android-layout android-constraintlayout


    【解决方案1】:

    试试这个:

    找到您的代码所在的活动,例如 ActivityA 并在 AndroidManifest.xml 中引入这一行:

    <activity
       android:name=".activities.ActivityA"
       android:windowSoftInputMode="adjustPan"> 
    </activity>
    

    From Android Documentation:

    "adjustPan" 活动的主窗口未调整大小以腾出空间 软键盘。相反,窗口的内容是 自动平移,使当前焦点永远不会被 键盘和用户始终可以看到他们正在输入的内容。这是 通常不如调整大小,因为用户可能需要 关闭软键盘以获取并与 窗户。

    【讨论】:

      【解决方案2】:

      如果您希望屏幕在任何情况下或用户单击 editText 时都不移动布局。您可以将 windowSoftInputMode 添加到不会移动布局的 adjustNothing 中。该行将添加到清单中。下面是清单文件中的代码。

      <activity android:name=".Activities.Main2Activity"
                  android:windowSoftInputMode="adjustNothing">
      

      仅出于测试目的,我将活动名称用作 MainActivity2,在您的活动中添加 android:windowSoftInputMode 行。 希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-07
        • 1970-01-01
        • 1970-01-01
        • 2015-04-05
        • 2016-08-06
        • 1970-01-01
        • 1970-01-01
        • 2018-09-01
        相关资源
        最近更新 更多