自定义圆角透明的Dialog-阿里云开发者社区

开发者社区> 啊啊啊88jdk> 正文

自定义圆角透明的Dialog

简介: 自定义圆角透明的Dialog 说明 系统默认的Dialog默认是背景不透明的,有时候项目需要Dialog为圆角透明,这个时候的解决方案就是---重写Dialog - 系统样式 - ...
+关注继续查看

自定义圆角透明的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

<style name="KCornerDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@android:color/transparent</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:backgroundDimAmount">0.6</item>
    </style>
  • 到这里,自定义的圆角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里面的布局实现就自行发挥把

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
dedecms如何增加自定义字段
  开源的cms比较好的一点是可以根据自己的需求来开发相应的功能,比如dedecms想要增加一个专家职称字段调用要怎么调用呢?   增加自定义字段:后台找到 “核心” - 频道模型 - 内容模型管理 - 字段管理 - 添加新字段,如下图所示   字段添加好了,怎样把这些字段内容调用出来呢? ...
740 0
自定义LOG投递OSS数据Partition,优化你的计算
数据划分Partition OSS数据存储具有高可靠、低成本等优点,是海量数据存储的最佳选择之一,尤其适用于半结构化的日志存储,并可以结合E-MapReduce(使用Hive、Impala等计算引擎)通过schema-on-read方式加载数据做查询分析。
3981 0
dedecms 模板自定义相关
dedecms  生成静态页的存放目录是根据dede_archives表中的senddate发布时间生成的Y/md 织梦cms  搜索结果页 模版,在templets/default/search.htm,更改搜索结果的分页样式在arc_searchviews.class.php  中的GetPageListDM此方法。
5077 0
阿里云服务器一键购买和自定义购买
阿里云服务器一键购买只可以选择突发性能实例t5,更多其他ECS实例规格配置需要选择自定义购买
557 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4432 0
如何设置dedecms自定义表单必填项?
  用dedecms自定义表单可以制作一个简单的预约系统,有些相关信息需要设置为必填项,比如联系方式,没有留下真实的电话或其他信息,以后要怎么联系到你的客户。那我们要如何设置织梦cms自定义表单必填项呢?随ytkah一起试试吧   一、先用一段php代码来判断验证码为必选项。
878 0
167
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载