У меня возникла проблема с положением индикатора ошибки моего EditText
при вызове editText.setError("...")
.
Как вы можете видеть на скриншоте, я использую BottomSheetDialog
с EditText
внутри него. Когда я показываю индикатор ошибки, текст совершенно неуместен. Кажется, что диалог "думает" о том, что он полноэкранный, в то время как на самом деле это не так.
Это мой файл макета диалога (phone_dialog.xml):
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="vertical">
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:padding="@dimen/padding_layout_normal"
android:text="@string/dialog_title_edit_phone"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<EditText
android:id="@+id/etPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:inputType="phone"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitle"/>
<Button
android:id="@+id/btnSavePhone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/etPhone"/>
</android.support.constraint.ConstraintLayout>
Мой макет Activity
(activity_contacts.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/rvContacts"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Вот как я показываю диалог из моего Activity
:
PhoneBottomDialog dialog = new PhoneBottomDialog(Context);
dialog.show();
Это мой класс PhoneBottomDialog
:
public class PhoneBottomDialog extends BottomSheetDialog {
public PhoneBottomDialog(Context context) {
super(context);
View view = getLayoutInflater().inflate(R.layout.phone_dialog, null);
setContentView(view);
// additional setup below this...
}
// ...
}
Я не выполняю никаких других макетов внутри своего пользовательского PhoneButtomDialog
. Изменение корневого макета моего диалога на RelativeLayout
или LinearLayout
, а также добавление ScrollView
ничего не изменило. Это также не проблема с устройством или конкретной версией Android, поскольку проблема возникает на всех моих тестовых устройствах от Android 5.0 до 7.1, это также происходит на эмуляторе.
Есть ли у кого-нибудь идея, почему это происходит?