常用的对话框
对话框 | 类 | 特殊 |
---|---|---|
普通 | AlertDialog.Builder() | |
单选 | AlertDialog.Builder() | setSingleChoiceItems() |
多选 | AlertDialog.Builder() | setMultiChoiceItems() |
日期 | DatePickerDialog | new DatePickerDialog(context,DatePickerDialog.OnDateSetListener,year,month,day); |
时间 | TimePickerDialog | new TimePickerDialog(context, TimePickerDialog.OnTimeSetListener,时,分,是否24进制); |
进度条 | ProgressDialog | setStyle(ProgressDialog.STYLE_HORIZONTAL) |
自定义 | AlertDialog.Builder() | setView() |
自定义对话框
思路
1.自定义类继承Dialog
2.重写Dialog的方法并添加需要的功能
3.在Activity中实例化自定义类的对象并展示
代码:
(1)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">
<LinearLayout
android:layout_width="350dp"
android:layout_height="350dp"
android:layout_centerInParent="true"
android:orientation="vertical">
<LinearLayout
android:id="@+id/a"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#12B6FF"
android:orientation="horizontal">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="评价一下吧!"
android:textColor="#fff"
android:textSize="25sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#fff"
android:orientation="vertical">
<TextView
android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="80dp"
android:gravity="center"
android:text="喜欢吗?给个五星好评, 鼓励\n我们变得更好"
android:textSize="20sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom"
android:orientation="horizontal">
<Button
android:id="@+id/no"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="#fff"
android:text="我要吐槽" />
<Button
android:id="@+id/yes"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_weight="1"
android:background="#fff"
android:text="五星好评"
android:textColor="#12B6FF" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
(2)自定义类继承dialog
public class dialog extends Dialog {
private TextView title; //标题
private TextView message; //内容
private Button no; //取消按钮
private Button yes; //确认按钮
private String stitle, smessage; //自定义标题和内容信息
YesOnclickListener yesOnclickListener; //确认接口监听
NoOnclickListener noOnclickListener; //取消接口监听
public interface YesOnclickListener { //确认接口
void yesclick();
}
public interface NoOnclickListener { //取消接口
void noclick();
}
//通过set方法从外界设置标题和内容以及按钮监听
public void setStitle(String stitle) {
this.stitle = stitle;
}
public void setSmessage(String smessage) {
this.smessage = smessage;
}
public void setYesOnclickListener(YesOnclickListener yesOnclickListener) {
this.yesOnclickListener = yesOnclickListener;
}
public void setNoOnclickListener(NoOnclickListener noOnclickListener) {
this.noOnclickListener = noOnclickListener;
}
public dialog(@NonNull Context context) {
super(context);
} //构造
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ff); //加载自定义布局(对话框)
initView(); //初始化控件
//外界设置标题和内容到控件
if (message != null) {
message.setText(smessage);
}
if (title != null) {
title.setText(stitle);
}
yes.setOnClickListener(new View.OnClickListener() { //确认点击事件
@Override
public void onClick(View view) {
yesOnclickListener.yesclick(); //接口中的方法
dismiss();
}
});
no.setOnClickListener(new View.OnClickListener() { //取消点击事件
@Override
public void onClick(View view) {
noOnclickListener.noclick();//接口中的方法
dismiss();
}
});
}
private void initView() {
title = (TextView) findViewById(R.id.title);
message = (TextView) findViewById(R.id.message);
no = (Button) findViewById(R.id.no);
yes = (Button) findViewById(R.id.yes);
}
}
(3)Activity点击展示对话框
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
public void onclick(View view) {
dialog dialog = new dialog(this); //创建对象
dialog.setYesOnclickListener(new dialog.YesOnclickListener() { //实现确认按钮
@Override
public void yesclick() {
Toast.makeText(Main2Activity.this, "给了五星好评", Toast.LENGTH_SHORT).show();
}
});
dialog.setNoOnclickListener(new dialog.NoOnclickListener() { //实现取消按钮
@Override
public void noclick() {
Toast.makeText(Main2Activity.this, "吐槽了一下", Toast.LENGTH_SHORT).show();
}
});
dialog.setSmessage("喜欢吗?给个五星好评, 鼓励\n我们变得更好"); //设置自定义内容
dialog.setStitle("评价一下吧"); //设置自定义标题
dialog.show(); //展示
}
}
效果: