我的Android应用程序中有以下ConstraintLayout:
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<ImageView
android:id="@+id/image_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
<TextView
android:id="@+id/instructions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_large"
android:text="@string/instruction"
app:layout_constraintTop_toBottomOf="@id/support_ic"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
<Button
android:id="@+id/call_button"
android:layout_marginTop="@dimen/spacing_large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:text="@string/phone"
android:textSize="18sp"
android:textColor="@drawable/button"
app:layout_constraintTop_toBottomOf="@+id/instructions"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
<EditText
android:id="@+id/message_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:lines="8"
android:hint="@string/support_message_hint"
android:textColorHint="@color/text_hint"
android:inputType="textCapSentences|textMultiLine"
android:background="@color/background_gray"
android:padding="@dimen/spacing_small"
android:textColor="@color/black"
app:layout_constraintBottom_toTopOf="@+id/send_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:gravity="top|left"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintVertical_weight="1"
/>
<Button
android:id="@+id/send_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/support_send"
android:background="@color/button_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</android.support.constraint.ConstraintLayout>
当我打开键盘时,视图会调整,底部的两个小部件(按钮和editText)会随键盘移动。然而,我的问题是,每当发生这种情况时,@ id / call_button按钮就位于editText之上。我不想要这个。我希望editText在键盘打开时覆盖按钮。
在这种情况下,有没有办法让editText在重叠其他小部件时先行?我尝试在我的onCreate方法中添加editText.bringToFront()
,但这并没有做任何事情。
另外,我试图避免在自己的布局中嵌套底部的两个小部件(按钮和editText)。我希望他们都保持在同一个ConstraintLayout中。谢谢你提前帮忙。
答案 0 :(得分:1)
我将android:elevation="4dp"
添加到editText的xml中,但它确实有效。
答案 1 :(得分:0)
材质设计指南指明Button
在其按下(8dp高程)和向上(2dp高程)状态下都使用高程。 https://material.io/guidelines/material-design/elevation-shadows.html#elevation-shadows-elevation-android
当两个堆叠在彼此之上在同一高度时,您看到哪个视图取决于布局中这些视图的顺序(例如,为什么您希望稍后写入的视图覆盖之前写的视图),但是提升优先于此。
正如您所发现的,您可以为其他视图添加高程,使其高于按钮,但这有点难看,可能会产生一些不必要的副作用。我认为更好的选择是在您的活动上设置清单属性android:windowSoftInputMode="adjustPan"
。这将导致您的活动视图在键盘打开时向上滑动,而不是调整大小。