自定义对话框
#.思路:
1.自定义类继承Dialog
2.重写Dialog的方法并添加需要的功能
3.在Activity中实例化自定义类的对象
#.布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".Main2Activity">
<LinearLayout
android:orientation="vertical"
android:layout_width="300dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/title"
android:textColor="#03A9F4"
android:textSize="16sp"
android:text="警告"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/msg"
android:textColor="#928F8F"
android:textSize="16sp"
android:layout_marginTop="10dp"
android:text="保护视力,少玩手机"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<View
android:layout_marginTop="15dp"
android:background="#C4C2C2"
android:layout_width="match_parent"
android:layout_height="1px"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="300dp"
android:layout_height="wrap_content">
<Button
android:id="@+id/no"
android:layout_weight="1"
android:background="@null"
android:text="取消"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<View
android:background="#C4C2C2"
android:layout_width="1px"
android:layout_height="match_parent"/>
<Button
android:id="@+id/yes"
android:layout_weight="1"
android:background="@null"
android:text="确定"
android:layout_width="0dp"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
#自定义类继承dialog
package com.hjy.major1;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MyDialog2 extends Dialog {
private TextView title;
private TextView msg;
private Button no;
private Button yes;
private String titleStr;
private String msgStr;
private String noStr;
private String yesStr;
private NoClickListener noClickListener;//取消按钮被点击了的监听器
private YesClickListener yesClickListener;//确定按钮被点击了的监听器
public MyDialog2(@NonNull Context context) {
super(context);
}
//接口回调
public interface NoClickListener{
void noClick();
}
/**
* 设置取消按钮的显示内容和监听
*
* @param str
* @param yesOnclickListener
*/
public void setNoClickListener(String no,NoClickListener noClickListener) {
if (no != null){
noStr = no;
}
this.noClickListener = noClickListener;
}
public interface YesClickListener{
void yesClick();
}
/**
* 设置确定按钮的显示内容和监听
*
* @param str
* @param yesOnclickListener
*/
public void setYesClickListener(String yes,YesClickListener yesClickListener) {
if (yes != null){
yesStr = yes;
}
this.yesClickListener = yesClickListener;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//获取视图
setContentView(R.layout.activity_main2);
title = (TextView) findViewById(R.id.title);
msg = (TextView) findViewById(R.id.msg);
no = (Button) findViewById(R.id.no);
yes = (Button) findViewById(R.id.yes);
/**
* 初始化界面控件的显示数据
*/
if (titleStr != null){
title.setText(titleStr);
}
if (msgStr != null){
msg.setText(msgStr);
}
if (noStr != null){
no.setText(noStr);
}
if (yesStr != null){
yes.setText(yesStr);
}
//设置取消的监听事件
no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (noClickListener != null){
noClickListener.noClick();
}
}
});
//设置确认的监听事件
yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (yesClickListener != null){
yesClickListener.yesClick();
}
}
});
}
/**
* 从外界Activity为Dialog设置标题
*
* @param title
*/
public void setTitleStr(String titleStr) {
this.titleStr = titleStr;
}
public void setMsgStr(String msgStr) {
this.msgStr = msgStr;
}
}
package com.hjy.major1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class Main3Activity extends AppCompatActivity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyDialog2 myDialog2 = new MyDialog2(Main3Activity.this);
myDialog2.setTitleStr("惊喜");
myDialog2.setMsgStr("恭喜你中奖了!!!");
myDialog2.setNoClickListener("cancel",new MyDialog2.NoClickListener() {
@Override
public void noClick() {
Toast.makeText(Main3Activity.this, "取消", Toast.LENGTH_SHORT).show();
}
});
myDialog2.setYesClickListener("ok",new MyDialog2.YesClickListener() {
@Override
public void yesClick() {
Toast.makeText(Main3Activity.this, "确定", Toast.LENGTH_SHORT).show();
}
});
myDialog2.show();
}
});
}
}