膨胀 ConstraintLayout 在某些设备上崩溃

Inflating ConstraintLayout crashes on some devices

我有一个 xml-layout 在某些设备上工作但在其他设备上膨胀时崩溃(xml-代码只显示部分):

<?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:id="@+id/constraintLayout_record_audio"
android:minWidth="@android:dimen/dialog_min_width_major"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>

膨胀布局在某些设备上工作正常,但在其他设备上会导致 InflateException

我在我的 xml- 文件中找到了罪魁祸首:

<!-- Causes InflateException on some devices: 
     android:minWidth="@android:dimen/dialog_min_width_major"  -->

不幸的是,删除导致 InflateException 的行后,android:layout_height="wrap_content" 不再起作用。 layout_height 总是像设置为 "match_parent" 一样呈现。关于发生了什么以及如何解决这个问题的任何想法?

为清楚起见添加

这是我调用对话框的方式:

fun showRecordAudioDialog(view: View, categoryId: String, detailId: String) {
    val dialog = RecordAudioDialogFragment.newInstance(categoryId, detailId)
    dialog.show(this@DetailsActivity.supportFragmentManager, "RecordAudioDialog")
}

在我的 RecordAudioDialogFragment 中:

    // Use the Builder class for convenient dialog construction
    val builder = AlertDialog.Builder(activity, style.CustomTheme_Dialog)

    val inflater = activity.layoutInflater
    val rootView = inflater.inflate(layout.dialog_record_audio, null)

由于某些奇怪的原因,如果未设置 android:minWidthandroid:layout_height 将不起作用。

所以,在 dimens.xml 我们需要添加一行 <dimen name="dialog_min_with">500dp</dimen>

然后将 android:minWidth="@dimen/dialog_min_with" 添加到我们的 mylayout.xml 文件中。

layout.xml 文件的头部现在是这样的:

<?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:id="@+id/constraintLayout_record_audio"
android:minWidth="@dimen/dialog_min_with"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">