val dialogView:View = LayoutInflater.from(activity).inflate(R.layout.dialog_add_task,null,false)
val dialog = activity?.let { AlertDialog.Builder(it,R.style.myCorDialog) }//设置样式
val dialogBox = dialog?.setView(dialogView)?.create() //添加任务窗口
dialogBox?.window?.setGravity(Gravity.BOTTOM) //设置对话框弹出的位置
dialogBox?.window?.attributes?.y = 160 // 距离底部160
dialogBox?.show() //打开对话框
dialogBox?.dismiss() //关闭对话框
dialogView.findViewById<ImageButton>(R.id.setTime).setOnClickListener{ //事件监听器
//方法体
}
第一行
LayoutInflater.from(context).inflate(int resource, @Nullable ViewGroup root, boolean attachToRoot)
context:上下文
resource:对话框布局
root:资源需要被添加的地方,一般为null
attachToRoot:是否添加到root,一般为false
第二行
activity?.let { AlertDialog.Builder(it,R.style.myCorDialog) }
R.style.myCorDialog为自定义的样式,下面的例子为添加圆角外框
如果没有要添加的style可以直接写activity?.let { AlertDialog.Builder(it) }
<style name="myCorDialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@drawable/dialog_corner_bg</item> <!-- 背景透明 -->
<item name="android:windowNoTitle">true</item> <!-- 没有标题 -->
<item name="android:backgroundDimEnabled">true</item> <!-- 背景模糊 -->
</style>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorAccent" />
<corners android:radius="10dp" /> <!--弧度 -->
</shape>
</item>
<item android:top="8dp" android:right="8dp" android:left="8dp" android:bottom="8dp"> <!--边框宽度 -->
<shape android:shape="rectangle">
<solid android:color="@color/white"/>
<corners android:radius="6dp" />
<padding android:bottom="8dp" android:left="8dp" android:right="8dp" android:top="8dp"/>
</shape>
</item>
</layer-list>
第四行
对话框弹出的位置设置:Gravity.TOP,Gravity.CENTER ,Gravity.BOTTEM
对话框事件监听器
dialogView.findViewById<ImageButton>(R.id.setTime).setOnClickListener{
//方法体
}
相关链接:
blog.csdn.net/Naide_S/art… 关于dialog的显示位置设置