自定义Dialog

public class CustomDialog extends Dialog {

private Button yes, no;//确定按钮
private TextView titleTv;//消息标题文本
private TextView messageTv;//消息提示文本
private String titleStr;//从外界设置的title文本
private String messageStr;//从外界设置的消息文本
//确定文本和取消文本的显示内容
private String yesStr, noStr;

private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器
private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器

/**
 * 设置取消按钮的显示内容和监听
 *
 * @param str
 * @param onNoOnclickListener
 */
public void setNoOnclickListener(String str, onNoOnclickListener onNoOnclickListener) {
    if (str != null) {
        noStr = str;
    }
    this.noOnclickListener = onNoOnclickListener;
}

/**
 * 设置确定按钮的显示内容和监听
 *
 * @param str
 * @param onYesOnclickListener
 */
public void setYesOnclickListener(String str, onYesOnclickListener onYesOnclickListener) {
    if (str != null) {
        yesStr = str;
    }
    this.yesOnclickListener = onYesOnclickListener;
}



public CustomDialog(Context context) {
    super(context, R.style.custom_dialog_style);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dialog_custom);
    //按空白处不能取消动画
    setCanceledOnTouchOutside(false);

    //初始化界面控件
    initView();
    //初始化界面数据
    initData();
    //初始化界面控件的事件
    initEvent();

}

/**
 * 初始化界面的确定和取消监听器
 */
private void initEvent() {
    //设置确定按钮被点击后,向外界提供监听
    yes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (yesOnclickListener != null) {
                yesOnclickListener.onYesClick();
            }
        }
    });

    no.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (noOnclickListener != null) {
                noOnclickListener.onNoClick();
            }
        }
    });
}

/**
 * 初始化界面控件的显示数据
 */
private void initData() {
    //如果用户自定了title和message
    if (titleStr != null) {
        titleTv.setText(titleStr);
    }
    if (messageStr != null) {
        messageTv.setText(messageStr);
    }
    //如果设置按钮的文字
    if (yesStr != null) {
        yes.setText(yesStr);
    }
    if (noStr != null) {
        no.setText(noStr);
    }
}

/**
 * 初始化界面控件
 */
private void initView() {
    yes = (Button) findViewById(R.id.yes);
    no = (Button) findViewById(R.id.no);
    titleTv = (TextView) findViewById(R.id.title);
    messageTv = (TextView) findViewById(R.id.message);
}

/**
 * 从外界Activity为Dialog设置标题
 *
 * @param title
 */
public void setTitle(String title) {
    titleStr = title;
}

/**
 * 从外界Activity为Dialog设置dialog的message
 *
 * @param message
 */
public void setMessage(String message) {
    messageStr = message;
}

/**
 * 设置确定按钮和取消被点击的接口
 */
public interface onYesOnclickListener {
    public void onYesClick();
}

public interface onNoOnclickListener {
    public void onNoClick();
}

@Override
public void show() {
    super.show();
    /**
     * 设置宽度全屏,要设置在show的后面
     */
    WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
    layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
    layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
    getWindow().getDecorView().setPadding(0, 0, 0, 0);
    getWindow().setAttributes(layoutParams);
}}

style

<style name="custom_dialog_style" parent="android:Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowIsTranslucent">false</item>
    <item name="android:windowNoTitle">true</item><!--除去title-->
    <item name="android:backgroundDimEnabled">true</item><!--半透明-->
    <item name="android:windowBackground">@color/transparent</item><!--除去背景色-->
    <item name="android:radius">10dp</item>
</style>

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000">
<LinearLayout
    android:layout_width="@dimen/dp_303"
    android:layout_height="@dimen/dp_131"
    android:layout_centerInParent="true"
    android:layout_marginLeft="@dimen/dp_36"
    android:layout_marginRight="@dimen/dp_36"
    android:background="@drawable/shape_dialog_msg"
    android:orientation="vertical">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="15dp"
        android:gravity="center"
        android:text=" "
        android:textColor="@color/blank"
        android:textSize="@dimen/sp_13"
        android:visibility="gone" />

    <TextView
        android:id="@+id/message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="4dp"
        android:layout_marginTop="@dimen/dp_30"

        android:layout_marginRight="4dp"
        android:text="提示消息"
        android:textColor="@color/blank"
        android:fontFamily="sans-serif-medium"
        android:textSize="@dimen/sp_16" />

    <View
        android:layout_width="match_parent"
        android:layout_height="0.6dp"
        android:layout_marginTop="@dimen/dp_29"
        android:background="@color/grayss" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/no"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@null"
            android:gravity="center"
            android:singleLine="true"
            android:fontFamily="sans-serif-medium"
            android:text="取消"
            android:textColor="#999999"
            android:textFontWeight="1"
            android:textSize="@dimen/sp_18" />

        <View
            android:layout_width="0.6dp"
            android:layout_height="@dimen/dp_50"
            android:background="@color/grayss" />

        <Button
            android:id="@+id/yes"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@null"
            android:gravity="center"
            android:singleLine="true"
            android:fontFamily="sans-serif-medium"
            android:text="呼叫"
            android:textColor="@color/orange"
            android:textFontWeight="1"
            android:textSize="@dimen/sp_18" />

    </LinearLayout>
</LinearLayout>

使用 引用比如

           CustomDialog customDialog = new CustomDialog(SearchhistoryActivity.this);
                customDialog.setMessage("清空记录无法恢复,是否确定");
                customDialog.setYesOnclickListener("再想想", new CustomDialog.onYesOnclickListener() {
                    @Override
                    public void onYesClick() {
                        customDialog.dismiss();
                    }
                });
                customDialog.setNoOnclickListener("确定清空", new CustomDialog.onNoOnclickListener() {
                    @Override
                    public void onNoClick() {
                        customDialog.dismiss();
                        Map map = new HashMap();
                        map.put("type", 0);
                        mPresenter.gethisSearchdelete(map);
                    }
                });
                customDialog.show();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值