Android 无法与自定义对话框';s宽度

Android 无法与自定义对话框';s宽度,android,android-layout,android-alertdialog,Android,Android Layout,Android Alertdialog,我已经创建了一个自定义对话框,并将宽度定义为match\u parent。但是当我运行应用程序时,它甚至没有包装内容,因为大部分内容都被剪裁了。我尝试了一些解决方案,但得到了相同的结果,我不知道我做错了什么: 对话框\u messages.xml <com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"

我已经创建了一个自定义对话框,并将宽度定义为
match\u parent
。但是当我运行应用程序时,它甚至没有包装内容,因为大部分内容都被剪裁了。我尝试了一些解决方案,但得到了相同的结果,我不知道我做错了什么:

对话框\u messages.xml

    <com.google.android.material.card.MaterialCardView
        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="wrap_content"
        android:orientation="vertical"
        app:cardCornerRadius="@dimen/corner"
        app:cardElevation="@dimen/elevation"
        app:cardUseCompatPadding="true">


        <LinearLayout

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintTop_toTopOf="parent">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/ic_msg_sm"
                android:drawablePadding="@dimen/normal"
                android:drawableTint="@color/colorDanger"
                android:padding="@dimen/normal_2x"
                android:text="Send Message"
                android:textColor="@color/colorBlack"
                android:textStyle="bold" />

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@color/colorGrey" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/normal_2x"
                android:text="Tap a message to send"
                android:textColor="@color/colorGrey"
                android:textSize="@dimen/font_sm1" />

            <ListView
                android:id="@+id/listView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/normal_2x" />

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_marginTop="8dp"
                android:layout_marginBottom="8dp"
                android:background="@color/colorGrey" />

            <Button
                android:id="@+id/btnCancel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginBottom="@dimen/normal"
                android:background="@null"
                android:paddingHorizontal="@dimen/normal_4x"
                android:text="Cancel"
                android:textColor="@color/colorDanger" />

        </LinearLayout>
    </com.google.android.material.card.MaterialCardView>

和设置类

MessageDialog.kt

    class MessageDialog(
        private val activity: Activity,
        private val onMessageClickListener: MessageClickListener
    ) : Dialog(activity) {

        private val messageList = arrayListOf<String>(
            "Can't locate you. Send instructions",
            "Heavy Traffic. I'll be late 10 minutes",
            "Just turning around the block",
            "Taxi arrived",
            "I am coming to your location",
            "I am arriving in 5 minutes",
            "Ok"
        )
        private lateinit var listView: ListView
        private lateinit var btnCancel: Button;

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            requestWindowFeature(Window.FEATURE_NO_TITLE)
            setContentView(R.layout.dialog_messages)

            val adapter = ArrayAdapter(activity, android.R.layout.simple_list_item_1, messageList)
            listView = findViewById(R.id.listView)
            listView.adapter = adapter
            listView.setOnItemClickListener { parent, view, position, id ->
                onMessageClickListener.onMessageClick(messageList.get(position))
                dismiss()
            }

            btnCancel = findViewById(R.id.btnCancel)
            btnCancel.setOnClickListener {
                dismiss()
            }
        }
    }
class消息对话框(
私人val活动:活动,
私有值onMessageClickListener:MessageClickListener
):对话框(活动){
private val messageList=arrayListOf(
“找不到您,请发送指示”,
“交通拥挤,我会迟到10分钟”,
“只是转个弯”,
“出租车来了”,
“我要去你的地方”,
“我5分钟后到达”,
“好的”
)
私有lateinit变量listView:listView
私有lateinit var BTNCENCEL:按钮;
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
requestWindowFeature(窗口。功能\u无\u标题)
setContentView(R.layout.dialog\u消息)
val adapter=ArrayAdapter(活动,android.R.layout.simple\u列表\u项目\u 1,消息列表)
listView=findViewById(R.id.listView)
listView.adapter=适配器
listView.setOnItemClickListener{parent,view,position,id->
onMessageClickListener.onMessageClick(messageList.get(position))
解雇
}
btnCancel=findViewById(R.id.btnCancel)
btnCancel.setOnClickListener{
解雇
}
}
}
但结果是:
我尝试了这里已经提供的一些其他答案,但没有任何效果。

创建一个对话框对象,并在show()部分中执行此操作

    val dialog = MessageDialog(activity, messageClickListener)

    val lp = WindowManager.LayoutParams()
    lp.copyFrom(dialog.window!!.attributes)
    lp.width = WindowManager.LayoutParams.MATCH_PARENT
    lp.height = WindowManager.LayoutParams.WRAP_CONTENT

    dialog.show()
    val window = dialog.window
    window!!.attributes = lp