Android 在“自定义警报”对话框上使用约束布局
我正在尝试为自定义警报对话框使用约束布局(天知道为什么,我总是遇到问题),并且我无法让视图显示任何内容,除非至少有一个元素的布局高度设置为“包裹内容”且不匹配约束。下面是我的XML:Android 在“自定义警报”对话框上使用约束布局,android,android-layout,android-custom-view,android-alertdialog,android-constraintlayout,Android,Android Layout,Android Custom View,Android Alertdialog,Android Constraintlayout,我正在尝试为自定义警报对话框使用约束布局(天知道为什么,我总是遇到问题),并且我无法让视图显示任何内容,除非至少有一个元素的布局高度设置为“包裹内容”且不匹配约束。下面是我的XML: <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android
<?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="match_parent">
<Spinner
android:id="@+id/shapeSpinner"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toTopOf="@+id/gH3"
app:layout_constraintEnd_toStartOf="@+id/gV2"
app:layout_constraintStart_toStartOf="@+id/gV1"
app:layout_constraintTop_toTopOf="@+id/gHBreak">
</Spinner>
<android.support.constraint.Guideline
android:id="@+id/guidelineSideLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.05" />
<android.support.constraint.Guideline
android:id="@+id/guidelineSideRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.95" />
<android.support.constraint.Guideline
android:id="@+id/gH1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.1" />
<android.support.constraint.Guideline
android:id="@+id/gH2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.2" />
<android.support.constraint.Guideline
android:id="@+id/gHBreak"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.25" />
<android.support.constraint.Guideline
android:id="@+id/gH3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.35" />
<android.support.constraint.Guideline
android:id="@+id/gH4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.45" />
<android.support.constraint.Guideline
android:id="@+id/gH5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.55" />
<android.support.constraint.Guideline
android:id="@+id/gEnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.60" />
<android.support.constraint.Guideline
android:id="@+id/gV1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.35" />
<android.support.constraint.Guideline
android:id="@+id/gV2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.65" />
<CheckBox
android:id="@+id/shapeCheckBox"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Shape"
app:layout_constraintBottom_toTopOf="@+id/gH1"
app:layout_constraintEnd_toStartOf="@+id/gV1"
app:layout_constraintStart_toStartOf="@+id/guidelineSideLeft"
app:layout_constraintTop_toTopOf="parent" />
<CheckBox
android:id="@+id/colourCheckBox"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Colour"
app:layout_constraintBottom_toTopOf="@+id/gH1"
app:layout_constraintEnd_toStartOf="@+id/gV2"
app:layout_constraintStart_toStartOf="@+id/gV1"
app:layout_constraintTop_toTopOf="parent" />
<CheckBox
android:id="@+id/radiusCheckBox"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Radius"
app:layout_constraintBottom_toTopOf="@+id/gH1"
app:layout_constraintEnd_toStartOf="@+id/guidelineSideRight"
app:layout_constraintStart_toStartOf="@+id/gV2"
app:layout_constraintTop_toTopOf="parent" />
<CheckBox
android:id="@+id/lWCheckBox"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Width/Height"
app:layout_constraintBottom_toTopOf="@+id/gH2"
app:layout_constraintEnd_toStartOf="@+id/gV1"
app:layout_constraintStart_toStartOf="@+id/guidelineSideLeft"
app:layout_constraintTop_toTopOf="@+id/gH1" />
<CheckBox
android:id="@+id/lengthCheckBox"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Length"
app:layout_constraintBottom_toTopOf="@+id/gH2"
app:layout_constraintEnd_toStartOf="@+id/gV2"
app:layout_constraintStart_toStartOf="@+id/gV1"
app:layout_constraintTop_toTopOf="@+id/gH1" />
<TextView
android:id="@+id/shapesText"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Shape"
android:textAlignment="center"
android:textSize="24sp"
app:layout_constraintBottom_toTopOf="@+id/gH3"
app:layout_constraintEnd_toStartOf="@+id/gV1"
app:layout_constraintStart_toStartOf="@+id/guidelineSideLeft"
app:layout_constraintTop_toTopOf="@+id/gHBreak" />
<TextView
android:id="@+id/colourText"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Colour"
android:textAlignment="center"
android:textSize="24sp"
app:layout_constraintBottom_toTopOf="@+id/gH4"
app:layout_constraintEnd_toStartOf="@+id/gV1"
app:layout_constraintStart_toStartOf="@+id/guidelineSideLeft"
app:layout_constraintTop_toTopOf="@+id/gH3" />
</android.support.constraint.ConstraintLayout>
这就是我运行它时的样子:
我做错了什么?我有
compile 'com.android.support.constraint:constraint-layout:1.1.0'
根据my build.gradle文件。因为您的布局没有任何固有的高度/宽度,而是通过
匹配父级
高度/宽度依赖于父级的大小。如果不在膨胀中指定父项,则没有可用的大小,因此默认为零。您将需要提供一个父参数作为
View dialogView = inflater.inflate(R.layout.filter,null);
而不是null
我不是100%确定应该采取什么方法。下面是一个关于堆栈溢出的答案,概述了一种方法
View dialogView = inflater.inflate(R.layout.filter,null);