我正在尝试创建一个使用自定义视图的对话框,该视图也附加了许多不同的行为,这就是我扩展AlertDialog而不是使用构建器的原因。
创建视图的代码看起来像这样
class MyTaskCreateDialog extends AlertDialog implements DialogInterface.OnCancelListener {
public MyTaskCreateDialog(Context ctx, TaskItem item, List<Person> people, IOnFinishListener listener) {
super(ctx) {
View view = LayoutInflater.from(ctx).inflate(Resource.Layout.dialog_my_task_create, null, false);
setView(view);
setCancelable(true);
setOnCancelListener(this);
setCanceledOnTouchOutside(true);
assign_views(view); //this assigns the views to the local variables
attach_listeners();
refresh_view();//this updates the view with data
}
以上使用此布局文件
<?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:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/app_padding">
<android.support.design.widget.TextInputLayout
android:id="@+id/my_task_create_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/app_margin"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/my_task_create_hint_title" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/my_task_create_description"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="@+id/my_task_create_title"
app:layout_constraintStart_toStartOf="@+id/my_task_create_title"
app:layout_constraintTop_toBottomOf="@+id/my_task_create_title">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/my_task_create_hint_description" />
</android.support.design.widget.TextInputLayout>
<TextView
android:id="@+id/my_task_create_assignee_caption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/my_task_create_caption_assignee"
app:layout_constraintBottom_toBottomOf="@+id/my_task_create_assignee"
app:layout_constraintStart_toStartOf="@+id/my_task_create_description"
app:layout_constraintTop_toTopOf="@+id/my_task_create_assignee" />
<Spinner
android:id="@+id/my_task_create_assignee"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/app_margin"
android:checked="true"
android:padding="@dimen/app_padding"
android:textOff="@string/my_task_create_toggle_manually"
android:textOn="@string/my_task_create_toggle_automatically"
app:layout_constraintEnd_toEndOf="@+id/my_task_create_description"
app:layout_constraintStart_toEndOf="@+id/my_task_create_assignee_caption"
app:layout_constraintTop_toBottomOf="@+id/my_task_create_description"
tools:listitem="@android:layout/simple_spinner_item" />
<Button
android:id="@+id/my_task_create_create_task"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/app_margin"
android:text="@string/my_task_create_button_create"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/my_task_create_cancel"
app:layout_constraintTop_toBottomOf="@+id/my_task_create_assignee" />
<Button
android:id="@+id/my_task_create_cancel"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/app_margin"
android:text="@string/my_task_create_button_cancel"
app:layout_constraintEnd_toStartOf="@+id/my_task_create_create_task"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/my_task_create_assignee" />
</android.support.constraint.ConstraintLayout>
创建一个底部有大填充的对话框。
实际上是我将ConstraintLayout的背景更改为灰色,然后对话框的下半部分似乎是默认颜色。
以上结果如下:
现在我知道为按钮保存了一些空间(我不使用那些,我使用布局文件中的自定义空间),但是如何让剩下的空间消失并使我的对话框包装其内容?
答案 0 :(得分:0)
我遇到了同样的问题,唯一有效的解决方案是将以下代码添加到View
内的所有ConstraintLayout
中:
android:layout_height="0dp"
app:layout_constraintHeight_default="wrap"
这些句子替换为:
android:layout_height="wrap_content"