无法匹配父级自定义对话框的宽度

时间:2020-02-24 15:26:40

标签: android android-layout android-alertdialog

我已经创建了一个自定义对话框,并将宽度定义为 <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> 。但是,当我运行该应用程序时,由于大部分内容都已被裁剪,它似乎甚至没有包装内容。我尝试了一些解决方案,但是得到了相同的结果,我不知道我在做什么错:

dialog_messages.xml

    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()
            }
        }
    }

和设置类

MessageDialog.kt

 Sub TradeDump()

 `Dim ws As Worksheet`
 `Dim wsp As Worksheet`
 `Dim wsc As Worksheet`
 `Dim i As Integer`

 `Set wsp = Sheets("Pivot")`
 `Set ws = Sheets("Cashflow Fix Data")`
 `Set wsc = Sheets("Control")`

 `Period = wsc.Range("Term")`

 `rng = wsp.Range(Range("G6"), wsp.Range("G6").End(xlDown)).Select`

 `For i = 1 To Period`
 `NextRow = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row + 1`
    'get the Next Empty Row
 `ws.Range("E" & NextRow).PasteSpecial xlPasteAll` 

    'paste

 Next i

End Sub

但这是结果: The end result 我已经尝试过这里已经提供的其他答案,但是没有任何效果。

1 个答案:

答案 0 :(得分:0)

创建一个Dialog对象,并在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
相关问题