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

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

###一、描述

一些常用的Dialog

###二、效果图

###三、代码

/** * author:Administrator on 2016/12/16 16:01 * description:自定义dialog * version:版本 */public class CommonDialog extends Dialog {    /**     * 显示的图片     */    private ImageView imageIv;    /**     * 显示的标题     */    private TextView titleTv;    /**     * 显示的消息     */    private TextView messageTv;    /**     * 确认和取消按钮     */    private Button negtiveBn, positiveBn;    /**     * 按钮之间的分割线     */    private View columnLineView;    public CommonDialog(Context context) {        super(context, R.style.CustomDialog);    }    /**     * 都是内容数据     */    private String message;    private String title;    private String positive, negtive;    private int imageResId = -1;    /**     * 底部是否只有一个按钮     */    private boolean isSingle = false;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.common_dialog_layout);        //按空白处不能取消动画        setCanceledOnTouchOutside(false);        //初始化界面控件        initView();        //初始化界面数据        refreshView();        //初始化界面控件的事件        initEvent();    }    /**     * 初始化界面的确定和取消监听器     */    private void initEvent() {        //设置确定按钮被点击后,向外界提供监听        positiveBn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (onClickBottomListener != null) {                    onClickBottomListener.onPositiveClick();                }            }        });        //设置取消按钮被点击后,向外界提供监听        negtiveBn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (onClickBottomListener != null) {                    onClickBottomListener.onNegtiveClick();                }            }        });    }    /**     * 初始化界面控件的显示数据     */    private void refreshView() {        //如果用户自定了title和message        if (!TextUtils.isEmpty(title)) {            titleTv.setVisibility(View.VISIBLE);            titleTv.setText(title);            titleTv.setVisibility(View.VISIBLE);        } else {            titleTv.setVisibility(View.GONE);        }        if (!TextUtils.isEmpty(message)) {            messageTv.setVisibility(View.VISIBLE);            messageTv.setText(message);        }        //如果设置按钮的文字        if (!TextUtils.isEmpty(positive)) {            positiveBn.setText(positive);        } else {            positiveBn.setText("确定");        }        if (!TextUtils.isEmpty(negtive)) {            negtiveBn.setText(negtive);        } else {            negtiveBn.setText("取消");        }        if (imageResId != -1) {            imageIv.setVisibility(View.VISIBLE);            imageIv.setImageResource(imageResId);            imageIv.setVisibility(View.VISIBLE);        } else {            imageIv.setVisibility(View.GONE);        }        /**         * 只显示一个按钮的时候隐藏取消按钮,回掉只执行确定的事件         */        if (isSingle) {            columnLineView.setVisibility(View.GONE);            negtiveBn.setVisibility(View.GONE);        } else {            negtiveBn.setVisibility(View.VISIBLE);            columnLineView.setVisibility(View.VISIBLE);        }    }    @Override    public void show() {        super.show();        refreshView();    }    /**     * 初始化界面控件     */    private void initView() {        negtiveBn = (Button) findViewById(R.id.negtive);        positiveBn = (Button) findViewById(R.id.positive);        titleTv = (TextView) findViewById(R.id.title);        messageTv = (TextView) findViewById(R.id.message);        imageIv = (ImageView) findViewById(R.id.image);        columnLineView = findViewById(R.id.column_line);    }    /**     * 设置确定取消按钮的回调     */    public OnClickBottomListener onClickBottomListener;    public CommonDialog setOnClickBottomListener(OnClickBottomListener onClickBottomListener) {        this.onClickBottomListener = onClickBottomListener;        return this;    }    public interface OnClickBottomListener {        /**         * 点击确定按钮事件         */        public void onPositiveClick();        /**         * 点击取消按钮事件         */        public void onNegtiveClick();    }    public String getMessage() {        return message;    }    public CommonDialog setMessage(String message) {        this.message = message;        return this;    }    public String getTitle() {        return title;    }    public CommonDialog setTitle(String title) {        this.title = title;        return this;    }    public String getPositive() {        return positive;    }    public CommonDialog setPositive(String positive) {        this.positive = positive;        return this;    }    public String getNegtive() {        return negtive;    }    public CommonDialog setNegtive(String negtive) {        this.negtive = negtive;        return this;    }    public int getImageResId() {        return imageResId;    }    public boolean isSingle() {        return isSingle;    }    public CommonDialog setSingle(boolean single) {        isSingle = single;        return this;    }    public CommonDialog setImageResId(int imageResId) {        this.imageResId = imageResId;        return this;    }}复制代码
复制代码
复制代码
复制代码

###四、示例

final CommonDialog dialog = new CommonDialog(activity);        dialog.setTitle("确定终止会议?")                .setNegtive("取消")                .setPositive("终止")                .setSingle(false).setOnClickBottomListener(new CommonDialog.OnClickBottomListener() {            @Override            public void onPositiveClick() {                dialog.dismiss();                deleteMeeting();            }            @Override            public void onNegtiveClick() {                dialog.dismiss();            }        }).show();复制代码

转载于:https://juejin.im/post/5b3ac8496fb9a024fe2a4665

你可能感兴趣的文章
ios 自定义delegate(一)
查看>>
创建美国地区的appleId
查看>>
例题10-2 UVa12169 Disgruntled Judge(拓展欧几里德)
查看>>
[c语言]c语言中的内存分配[转]
查看>>
JS 原生ajax写法
查看>>
day 10 字符编码和文件处理 细节整理
查看>>
如何打造亚秒级加载的网页1——前端性能
查看>>
「陶哲軒實分析」 習題 3.5.9
查看>>
在首次发布三周之后,MLflow迎来了0.2版本
查看>>
360开源又一力作——KafkaBridge:让操作kafka更简单!
查看>>
你真的懂用户画像吗?
查看>>
微软正在考虑将Windows默认浏览器改为Chromium
查看>>
Swift和R3联手了,跨境支付市场竞争升级
查看>>
Apache Beam实战指南 | 玩转KafkaIO与Flink
查看>>
为所有PHP-FPM容器构建单独的NGinx Dock镜像
查看>>
Netty防止内存泄漏措施
查看>>
聊天宝彻底凉了,遭罗永浩抛弃,团队就地解散
查看>>
Composer管理PHP依赖关系
查看>>
React.js学习笔记之JSX解读
查看>>
WebPack1.x 常用功能介绍
查看>>