android DialogFragment用onCreateView方式,自定义宽高和window、margin,实现的具体例子,kotlin语音
时间: 2024-02-23 14:58:15 浏览: 114
好的,以下是一个简单的Kotlin代码示例,演示如何使用DialogFragment来创建自定义对话框并使用onCreateView方法进行布局,并自定义宽高和window、margin:
```kotlin
import android.graphics.Point
import android.os.Bundle
import android.view.*
import androidx.fragment.app.DialogFragment
class CustomDialogFragment : DialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.fragment_dialog_custom, container, false)
//在这里可以对布局中的控件进行初始化和设置
return rootView
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NORMAL, R.style.Theme_AppCompat_Dialog)
}
override fun onStart() {
super.onStart()
dialog?.window?.apply {
val size = Point()
val display = windowManager.defaultDisplay
display.getSize(size)
val width = size.x //设置对话框的宽度为屏幕宽度的80%
setLayout((width * 0.8).toInt(), WindowManager.LayoutParams.WRAP_CONTENT)
setGravity(Gravity.CENTER) //设置对话框的位置为屏幕中央
attributes?.apply {
horizontalMargin = 0.1f //设置对话框的左右margin为屏幕宽度的10%
verticalMargin = 0.2f //设置对话框的上下margin为屏幕高度的20%
}
}
}
}
```
在这个示例中,我们重写了onStart方法,该方法在对话框显示前调用。我们在这里获取对话框的窗口,并设置其布局参数。我们首先获取屏幕的宽度和高度,然后将对话框的宽度设置为屏幕宽度的80%,高度为包裹内容。我们还使用setGravity方法将对话框放置在屏幕中央。
我们还使用attributes属性来设置对话框的margin。在这个示例中,我们将左右margin设置为屏幕宽度的10%,将上下margin设置为屏幕高度的20%。
请注意,我们没有在此示例中添加任何逻辑或事件处理程序,因为这取决于对话框的用途。此示例仅用于演示如何使用DialogFragment和onCreateView方法创建自定义对话框,并自定义宽高和window、margin。
阅读全文