DialogFragment自定义宽高和圆角背景
·
更新:去掉DialogFragment的默认背景,宽高、样式由布局文件决定。
BaseDialogFragment.kt
package com.miemie.indonesiafinance.base
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.Window
import androidx.fragment.app.DialogFragment
/**
* @Date: 2021/9/17 16:28
* @Description:去掉默认背景的DialogFragment
*/
abstract class BaseDialogFragment : DialogFragment() {
/**
* 返回布局View
*/
abstract fun getLayoutView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
dialog?.apply {
requestWindowFeature(Window.FEATURE_NO_TITLE)
window?.apply {
//去掉DialogFragment内部的背景色
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
//去掉Padding
decorView.setPadding(0,0,0,0)
}
}
return getLayoutView(inflater,container,savedInstanceState)
}
}
===========================================================================
- DialogFragment自定义宽高

在onStart()里面设置宽高
class OrderRefundDialog : DialogFragment() {
override fun onStart() {
super.onStart()
val dialog = dialog
if (dialog != null) {
val metrics = resources.displayMetrics
//宽度设为屏幕宽度的90%
dialog.window?.setLayout( (metrics.widthPixels * 0.9).toInt(), ViewGroup.LayoutParams.WRAP_CONTENT)
}
}
}
- BottomSheetDialogFragment设置圆角

在onCreate()里面设置透明style
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(DialogFragment.STYLE_NORMAL,R.style.TransBgBottomSheet)
}
styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TransBgBottomSheet" parent="Theme.MaterialComponents.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/AppBottomSheetStyle</item>
</style>
<style name="AppBottomSheetStyle" parent="Widget.MaterialComponents.BottomSheet.Modal">
<item name="backgroundTint">@color/color_transparent</item>//<color name="color_transparent">#00000000</color>
</style>
</resources>
根布局设置圆角background
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/colorWhite"/>
<corners android:topLeftRadius="20dp"
android:topRightRadius="20dp"/>
</shape>
更多推荐



所有评论(0)