KOTLIN 继承DAILOG接口写一个自定的DAILOG,配合XML,有三個鍵,並且把按鍵的位置向右移動1㎝
时间: 2023-06-24 16:06:43 浏览: 79
首先,我们需要创建一个继承自Dialog类的自定义对话框类。在这个类中,我们需要重写构造方法和onCreate方法,并且在onCreate方法中设置自定义对话框的布局和按钮的点击事件。
```kotlin
class CustomDialog(context: Context) : Dialog(context), View.OnClickListener {
init {
//设置对话框的样式
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
requestWindowFeature(Window.FEATURE_NO_TITLE)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.custom_dialog_layout)
//获取按钮并设置点击事件
val button1 = findViewById<Button>(R.id.button1)
val button2 = findViewById<Button>(R.id.button2)
val button3 = findViewById<Button>(R.id.button3)
button1.setOnClickListener(this)
button2.setOnClickListener(this)
button3.setOnClickListener(this)
//设置按钮的位置
val layoutParams1 = button1.layoutParams as LinearLayout.LayoutParams
layoutParams1.setMargins(10, 0, 0, 0)
button1.layoutParams = layoutParams1
val layoutParams2 = button2.layoutParams as LinearLayout.LayoutParams
layoutParams2.setMargins(110, 0, 0, 0)
button2.layoutParams = layoutParams2
val layoutParams3 = button3.layoutParams as LinearLayout.LayoutParams
layoutParams3.setMargins(210, 0, 0, 0)
button3.layoutParams = layoutParams3
}
override fun onClick(v: View?) {
//处理按钮的点击事件
when (v?.id) {
R.id.button1 -> {
//TODO
}
R.id.button2 -> {
//TODO
}
R.id.button3 -> {
//TODO
}
}
dismiss()
}
}
```
接下来,我们需要在res/layout文件夹中创建一个名为custom_dialog_layout.xml的布局文件,用于设置自定义对话框的样式和按钮。
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Custom Dialog"
android:textSize="20sp"
android:textStyle="bold" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="10dp"
android:background="@android:color/darker_gray" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center_horizontal">
<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="Button 1" />
<Button
android:id="@+id/button2"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="Button 2" />
<Button
android:id="@+id/button3"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="Button 3" />
</LinearLayout>
</LinearLayout>
```
最后,我们需要在Activity中使用自定义对话框类,并且在按钮的点击事件中显示对话框。
```kotlin
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//创建自定义对话框
val customDialog = CustomDialog(this)
//获取按钮并设置点击事件
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
customDialog.show()
}
}
}
```
这样,我们就成功地创建了一个继承自Dialog类的自定义对话框,并且把按鍵的位置向右移動1㎝。
阅读全文