博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义圆角透明的Dialog
阅读量:5962 次
发布时间:2019-06-19

本文共 2152 字,大约阅读时间需要 7 分钟。

自定义圆角透明的Dialog


说明

系统默认的Dialog默认是背景不透明的,有时候项目需要Dialog为圆角透明,这个时候的解决方案就是---重写Dialog

- 系统样式

p1
- 自定义以后的样式
p2

自定义一个Dialog,继承Dialog

package ktalk.kong.qingwei.kcornerdialog;    import android.app.Dialog;    import android.content.Context;    import android.view.Gravity;    import android.view.View;    import android.view.Window;    import android.view.WindowManager;    public class KCornerDialog extends Dialog {
private static int default_width = 160; // 默认宽度 private static int default_height = 120;// 默认高度 private boolean noBackPressed = false; public KCornerDialog(Context context, View layout, int style) { this(context, default_width, default_height, layout, style); } public KCornerDialog(Context context, int width, int height, View layout, int style) { super(context, style); // 加载布局 setContentView(layout); // 设置Dialog参数 Window window = getWindow(); WindowManager.LayoutParams params = window.getAttributes(); params.gravity = Gravity.CENTER; window.setAttributes(params); } /** * 设置返回键 * * @param b */ public void setBackPressed(boolean b) { noBackPressed = b; } @Override public void onBackPressed() { if (!noBackPressed) { super.onBackPressed(); } } }
  • 说明

    public KCornerDialog(Context context, int width, int height, View layout, int style)

    这个构造方法的最后一个参数,是一个style,需要我们自己去设定Dialog样式,我们的需求是,设置一个圆角的背景图片后,让Dialog是圆角透明的

Style

在styles.xml文件中加入样式

res->values->styles.xml

  • 到这里,自定义的圆角Dialog就写完了,下面介绍下使用

自定义Dialog的使用

/**     * 显示自定义圆角Dialog     */    private void showCornerDialog() {        Toast.makeText(this, "显示自定义圆角Dialog", Toast.LENGTH_SHORT).show();        View view = View.inflate(this, R.layout.corner_dialog_view, null);        KCornerDialog kCornerDialog = new KCornerDialog(this, 0, 0, view, R.style.KCornerDialog);        kCornerDialog.show();    }
  • 最后一个参数 R.style.KCornerDialog 就是我们加入的Dialog样式

有的Dialog可能需要禁掉返回键,例如有时候需要强制用户执行某些操作,思路还是一样,在自定义的Dialog下控制onBackPressed就行了,这里已经写好了

  • // 禁用返回键 kCornerDialog.setBackPressed(true);
  • // 开放返回键 kCornerDialog.setBackPressed(false);

Dialog里面的布局实现就自行发挥把

你可能感兴趣的文章
生成树
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
Beta冲刺——day6
查看>>
Comet OJ - Contest #3 题解
查看>>
[网络流24题-9]试题库问题
查看>>
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
HDOJ_ACM_Rescue
查看>>
笔记纪录
查看>>
九、oracle 事务
查看>>
Git - 操作指南
查看>>
正则表达式的贪婪与非贪婪模式
查看>>
SqlServer存储过程调用接口
查看>>
DOM
查看>>
通过jQuery.support看javascript中的兼容性问题
查看>>
NYOJ-取石子
查看>>
AngularJS
查看>>
《zw版·Halcon-delphi系列原创教程》halconxlib控件列表
查看>>
List与数组的相互转换
查看>>
Computer Science Theory for the Information Age-4: 一些机器学习算法的简介
查看>>
socketserver模块使用方法
查看>>