• Android -- 自定义Dialog


      设计视图

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:textColor="#000000"
            android:text="提示"
            android:textStyle="bold"
            android:layout_marginTop="20dp"/>
    
        <TextView
            android:id="@+id/tv_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:textColor="#000000"
            android:text="删除"
            android:layout_marginTop="20dp"
            android:layout_marginBottom="20dp"/>
    
        <view
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:background="#817F7F"/>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/tv_cancel"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="取消"
                android:textSize="20sp"
                android:textColor="#A62518BB"
                android:gravity="center"/>
    
            <view
                android:layout_width="0.5dp"
                android:layout_height="match_parent"
                android:background="#A3A3A3"/>
            <TextView
                android:id="@+id/tv_confirm"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="确定"
                android:textSize="20sp"
                android:textColor="#A62518BB"
                android:gravity="center"/>
        </LinearLayout>
    </LinearLayout>

      设计自定义的类

    public class CustomDialog extends Dialog implements View.OnClickListener {
    
        private TextView mTvTitle,mTvMessage,mTvCancel,mTvConfirm;
        private String title,message,cancel,confirm;
        private IOnCancelListener cancelListener;
        private IOnConfirmListener confirmListener;
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public void setCancel(String cancel,IOnCancelListener cancelListener) {
            this.cancel = cancel;
            this.cancelListener = cancelListener;
        }
    
        public void setConfirm(String confirm,IOnConfirmListener confirmListener) {
            this.confirm = confirm;
            this.confirmListener = confirmListener;
        }
    
        public CustomDialog(@NonNull Context context) {
            super(context);
        }
    
        public CustomDialog(@NonNull Context context, int themeResId) {
            super(context, themeResId);
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout_custom_dialog);
    
            //设置宽度
            WindowManager m = getWindow().getWindowManager();
            Display d = m.getDefaultDisplay();
            WindowManager.LayoutParams p = getWindow().getAttributes();
            Point size = new Point();
            d.getSize(size);
            p.width = (int)(size.x * 0.8);  //设置dialog的宽度为当前手机屏幕的宽度 * 0.8
            getWindow().setAttributes(p);
    
    
            mTvTitle = findViewById(R.id.tv_title);
            mTvMessage = findViewById(R.id.tv_message);
            mTvCancel = findViewById(R.id.tv_cancel);
            mTvConfirm = findViewById(R.id.tv_confirm);
    
            if(!TextUtils.isEmpty(title)){
                mTvTitle.setText(title);
            }
            if(!TextUtils.isEmpty(message)){
                mTvMessage.setText(message);
            }
            if(!TextUtils.isEmpty(cancel)){
                mTvCancel.setText(cancel);
            }
            if(!TextUtils.isEmpty(confirm)){
                mTvConfirm.setText(confirm);
            }
            mTvCancel.setOnClickListener(this);
            mTvConfirm.setOnClickListener(this);
    
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.tv_cancel:
                    if(cancelListener != null){
                        cancelListener.onCancel(this);
                    }
                    dismiss();
                    break;
                case R.id.tv_confirm:
                    if(confirmListener != null){
                        confirmListener.onConfirm(this);
                    }
                    dismiss();
                    break;
            }
        }
    
        public interface IOnCancelListener{
            void onCancel(CustomDialog dialog);
        }
        public interface IOnConfirmListener{
    
            void onConfirm(CustomDialog dialog);
        }
    }
  • 相关阅读:
    2020-03-12推荐阅读链接
    一问带你区分清楚Authentication,Authorization以及Cookie、Session、Token
    Alibaba-技术专区-开源项目之Nacos源码分析
    Alibaba-技术专区-开源项目之Nacos功能特性
    Alibaba-技术专区-开源项目之Nacos环境准备
    Java-技术专区-javaAgent(插桩,attach)
    SkyWalking 6.x 源码分析 —— 调试环境搭建 (非原创)
    SkyWalking 6.2-Docker-Compose搭建单体
    Zookeeper-技术专区-配置以及学习
    Java-技术专区-设计模式-reactor模式
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/12162796.html
Copyright © 2020-2023  润新知