在调用对话框的show方法之前,如何调整对话框的大小



我有一个对话框,上面有EditText,它有android:layout_width="wrap_content"

在调用show方法之前,我用setText("Some string")在上面设置了一些文本。

当调用show()方法时,对话框的大小不会调整,EditText也不会出现。

有没有办法在调用show()之前调整它的大小。

这是代码:

Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_supply_history);
EditText txtStartDate = dialog.findViewById(R.id.txtStartDate);
txtStartDate.setText(sdf.format(startDate.getTime()));
EditText txtFinalDate = dialog.findViewById(R.id.txtFinalDate);
txtFinalDate.setText(sdf.format(finalDate.getTime()));
dialog.show();

布局:

<?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"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/lblStartDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="@string/lblStartDate"
app:layout_constraintBaseline_toBaselineOf="@+id/txtStartDate"
app:layout_constraintEnd_toStartOf="@+id/imgStartDate"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/imgStartDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
app:layout_constraintBottom_toBottomOf="@+id/txtStartDate"
app:layout_constraintEnd_toStartOf="@+id/txtStartDate"
app:layout_constraintStart_toEndOf="@+id/lblStartDate"
app:layout_constraintTop_toTopOf="@+id/txtStartDate"
app:srcCompat="@android:drawable/ic_menu_today" />
<EditText
android:id="@+id/txtStartDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:focusable="false"
android:inputType="date"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imgStartDate"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/lblFinalDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:text="@string/lblFinalDate"
app:layout_constraintBaseline_toBaselineOf="@+id/txtFinalDate"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/imgFinalDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
app:layout_constraintBottom_toBottomOf="@+id/txtFinalDate"
app:layout_constraintEnd_toStartOf="@+id/txtFinalDate"
app:layout_constraintStart_toStartOf="@+id/imgStartDate"
app:layout_constraintTop_toTopOf="@+id/txtFinalDate"
app:srcCompat="@android:drawable/ic_menu_today" />
<EditText
android:id="@+id/txtFinalDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:focusable="false"
android:inputType="date"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imgFinalDate"
app:layout_constraintTop_toBottomOf="@+id/txtStartDate" />
</android.support.constraint.ConstraintLayout>

尝试用新布局重新调用显示对话框的方法

如果您的对话框是使用其他对话框主题的活动,您可以尝试设置:

android:windowSoftInputMode="adjustResize|stateHidden"

或者,您可以参考并使用:

alertDialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

最新更新