我在AppCompatEditText
中都有一个FrameLayout
作为搜索栏,并且有一个ConstraintLayout
作为“清除”按钮:
<androidx.constraintlayout.widget.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:layout_width="match_parent"
android:layout_height="match_parent"
...
android:layoutDirection="ltr">
<FrameLayout
android:id="@+id/clearBtnLyt"
android:layout_width="36dp"
android:layout_height="36dp"
...
app:layout_constraintBottom_toBottomOf="@+id/editText1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/editText1">
... CONTENTS ...
</FrameLayout>
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/editText1"
android:layout_width="0dp"
android:layout_height="wrap_content"
...
android:layoutDirection="rtl"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/clearBtnLyt"
app:layout_constraintTop_toBottomOf="@id/toolbar1" />
...
</androidx.constraintlayout.widget.ConstraintLayout>
ConstraintLayout
设置为从左到右,只有AppCompatEditText
是RTL。这些视图已在Android Studio的布局预览中很好地显示。
但是当我在装有Android 8.0操作系统的Samsung Galaxy A5(2017)上运行该应用程序时,它看起来像这样:
我无法在AppCompatEditText
中输入任何内容或单击它,但是“清除”按钮正在起作用。我的手机也设置为从左到右。 我在做什么错?
问题是因为我将layoutDirection
的AppCompatEditText
设置为rtl
。因为应该是从右到左,所以我没有将其设置为ltr
,但是我将其约束从[]更改为
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/clearBtnLyt"
app:layout_constraintTop_toBottomOf="@id/toolbar1"
我认为这是一个错误,当您更改layoutDirection RTL时,它在开始/结束和左/右之间有混淆,您可以将开始左右更改为en,同样: