去除dialog小黑点

当把dialog的背景设置为圆角时,绝大部分会碰到四个角有不和谐背景的情况
网上解决办法很多基本上分为设置style,布局嵌套,设置window属性
也亲自尝试了一下,效果总是时好时坏,于是结合各方法做一次总结

  1. 要想实现圆角,dialog的布局(自定义)的根节点不能设置背景或者颜色,否则无论哪种方法都不能去掉圆角背景
  2. 最好是自定义dialog,并在onstart中设置window属性
  3. 完成了上两步,style就可有可无了,为了避免小瑕疵(例如莫名多出一条线)建议还要带上,如下

      <style name="dialog" parent="@android:style/Theme.Dialog">
         <item name="android:windowFrame">@color/transparent</item>
         <!-- 边框 -->
         <item name="android:windowIsFloating">true</item>
         <!-- 是否浮现在activity之上 -->
         <item name="android:windowIsTranslucent">true</item>
         <!-- 半透明 -->
         <item name="android:windowNoTitle">true</item>
         <!-- 无标题 -->
         <item name="android:background">@color/transparent</item>
         <!-- 背景色 -->
         <item name="android:windowBackground">@color/white</item>
         <!-- 背景透明 -->
         <item name="android:backgroundDimEnabled">true</item>
         <!-- 模糊 -->
         <item name="android:windowFullscreen">true</item>
         <!-- 全屏 -->
     </style>
  4. 构造方法中设置style

      public MyDialog(Context context) {
         super(context, R.style.dialog);
         init();
     }
  5. 自定义dialog中设置window属性,通过设置背景可以去掉dialog中的四角黑点 

    @Override protected void onStart() {
     super.onStart();
         getWindow().setBackgroundDrawableResource(android.R.color.transparent);
     }
  6. 设置dialog布局,init()方法可在构造方法中调用

     private void init() {
         setContentView(R.layout.dialog);
     }
  7. 这样弹出的dialog就会正常显示布局中的圆角了

  8. 备注

    实现dialog样式的方式有两种

    • Activity作为Dialog样式弹出
    • 使用 T extends Dialog类

      Dialog类或者其子类的弹出不会触发Activity的生命周期
      Activity作为Dialog则会触发上个Activity的oPause方法,消失时触发onResume方法



作者:hp简书
链接:http://www.jianshu.com/p/f1946fc9a676
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值