Dialog圆角无效问题
同样是setBackgroundDrawableResource或setBackgroundDrawable无效的问题; 共分两种情形, 一是有标题的Dialog, 另一种是无标题的Dialog
原因
Dialog设置背景实质上用的是Dialog.setContentView方法, 而Android系统提供的Dialog本身是有标题的布局空间的, 当通过Window设置把标题隐藏掉后, 无标题下做个圆角是给剩下的FrameLayout做圆角, 这样就很好理解了。
控制Dialog标题显示隐藏的方式
requestWindowFeature(Window.FEATURE_NO_TITLE)
or
<style name="AndoDialog">
<item name="android:windowNoTitle">false</item><!--false 有标题 true无标题-->
</style>
有标题
直接设置window.setBackgroundDrawableResource(R.drawable.rectangle_ando_dialog_bottom)即可, 并不是一些博客中所说的如下配置:
//没用
window.setBackgroundDrawableResource(android.R.color.transparent)
window.decorView.setPadding(0, 0, 0, 0)
无标题
无标题处理圆角问题, 就是给FrameLayout做圆角
无标题时 window.setBackgroundDrawableResource(R.drawable.rectangle_ando_dialog_bottom) 设置不生效, 需要对Dialog的布局文件进行调整。 如底部弹窗左上角和右上角是圆角, 设置圆角背景的同时加上paddingXXX属性,数值与
drawable中android:xxxRadius=”10dp”相等。
//Dialog顶层布局中
android:paddingTop="10"
android:background="@drawable/rectangle_ando_dialog_bottom"
附
rectangle_ando_dialog_bottom.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
<solid android:color="@color/color_ando_dialog_white" />
</shape>