以一个有确定和取消的简单dialog为例
1、dialog代码如下:
package com.dway.dialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import com.dway.test.R;
/**
* 确定取消对话框
* Created by ldw on 2017/12/18.
*/
public class CheckDialog extends Dialog implements View.OnClickListener {
private String mMessage = "";
public CheckDialog(@NonNull Context context) {
super(context, R.style.MyDialogStyle);
}
public CheckDialog(@NonNull Context context, String message) {
super(context, R.style.MyDialogStyle);
mMessage = message;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_check);
findViewById(R.id.dialog_check_yes).setOnClickListener(this);
findViewById(R.id.dialog_check_no).setOnClickListener(this);
if(!TextUtils.isEmpty(mMessage)) {
TextView textView = findViewById(R.id.dialog_check_msg);
textView.setText(mMessage);
}
setCancelable(true);
setCanceledOnTouchOutside(true);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.dialog_check_yes){
dismiss();
if(mListener != null){
mListener.onClickYes();
}
}else if(v.getId() == R.id.dialog_check_no){
dismiss();
if(mListener != null){
mListener.onClickNo();
}
}
}
private OnDialogClickListener mListener = null;
public void setOnDialogClickListener(OnDialogClickListener listener){
mListener = listener;
}
public interface OnDialogClickListener {
void onClickYes();
void onClickNo();
}
}
2、其中布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="624dp"
android:layout_height="268dp"
android:orientation="vertical"
android:background="@drawable/dialog_bg" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="39dp"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:textSize="30sp"
android:textColor="#404040"
android:textStyle="bold"
android:text="温馨提示"/>
<TextView
android:id="@+id/dialog_check_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingStart="117dp"
android:paddingEnd="117dp"
android:layout_gravity="center_horizontal"
android:gravity="start"
android:textSize="19sp"
android:textColor="#676767"
android:text="提示内容"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:layout_gravity="center_horizontal"
android:orientation="horizontal">
<TextView
android:id="@+id/dialog_check_yes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingStart="50dp"
android:paddingEnd="50dp"
android:gravity="center"
android:textSize="20sp"
android:textColor="#ffffff"
android:text="确定"
android:background="@drawable/btn_bg_selector" />
<TextView
android:id="@+id/dialog_check_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="41dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingStart="50dp"
android:paddingEnd="50dp"
android:gravity="center"
android:textSize="20sp"
android:textColor="#ffffff"
android:text="取消"
android:background="@drawable/btn_bg_selector" />
</LinearLayout>
</LinearLayout>
3、style.xml中:
<style name="MyDialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>