对话框未显示其内容

时间:2019-11-22 18:36:22

标签: android android-layout

我对这个特定对话框有问题,我将其实现为一个选项,可以在工具栏的“选项”菜单中显示,但是当我单击该选项时,它不显示对话框的内容。我已经用我实现的其他对话框布局尝试了这些,当我在这里实现它们时它们都可以工作,所以我直觉问题出在XML布局上,但是我似乎找不到问题。

代码:

else if(id == R.id.action_setting)
            {
                Dialog dialog = new Dialog(this);
                dialog.setContentView(R.layout.dialog_settings);
                dialog.setTitle("Settings");
                CheckBox set_splash = dialog.findViewById(R.id.setting_check);
                boolean have_splash =pref.getBoolean(SplashActivity.HAVE_SPLASH,false);
                if(have_splash)
                    set_splash.setChecked(true);
                else
                    set_splash.setChecked(false);
                ImageButton confirm_btn = dialog.findViewById(R.id.setting_confirm);
                ImageButton cancel_btn = dialog.findViewById(R.id.setting_cancel);
                confirm_btn.setOnClickListener(v -> {
                    boolean new_splash = set_splash.isChecked();
                    edit.putBoolean(SplashActivity.HAVE_SPLASH,new_splash);
                    edit.commit();
                    dialog.dismiss();
                });
                cancel_btn.setOnClickListener(v -> dialog.dismiss());
                dialog.show();
            }

XML:

<?xml version="1.0" encoding="utf-8"?>

    <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="wrap_content">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/linearLayout5">

            <ImageButton
                android:id="@+id/setting_confirm"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/button_highlight_dark"
                android:paddingVertical="20dp"
                app:srcCompat="@drawable/ic_confirm" />

            <ImageButton
                android:id="@+id/setting_cancel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/button_highlight_dark"
                android:paddingVertical="20dp"
                app:srcCompat="@drawable/ic_cancel" />
        </LinearLayout>

        <TextView
            android:id="@+id/setting_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@color/themeDark"
            android:paddingVertical="10dp"
            android:paddingLeft="10dp"
            android:text="@string/settings"
            android:textColor="@color/white"
            android:textSize="10pt"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <LinearLayout
            android:id="@+id/linearLayout5"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:background="@color/themeLight"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/setting_text">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="6"
                android:textColor="@color/white"
                android:paddingVertical="20dp"
                android:paddingLeft="10dp"
                android:text="@string/splash_setting"
                android:textSize="10pt" />

            <CheckBox
                android:id="@+id/setting_check"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
        </LinearLayout>

    </androidx.constraintlayout.widget.ConstraintLayout>

1 个答案:

答案 0 :(得分:0)

对话框中的match_parent参数将被忽略。因此,对话框的宽度为0。

获得正确的高度和宽度的最简单方法是使用AlertDialog.Builder。 如果自定义的AlertDialog不够,您可以按照以下答案将对话框放大: Android get full width for custom Dialog

Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog_settings);
Window window = dialog.getWindow();
window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);