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); } }