android之对话框
2020-04-04 22:17 小giao 阅读(229) 评论(0) 收藏 举报一.普通对话框
直接上代码
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化组件 bu_normal=findViewById(R.id.bu_normal_button); //绑定点击事件 bu_complex=findViewById(R.id.bu_complex_dialog); bu_my=findViewById(R.id.bu_my_dialog); bu_normal.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this); //设置标题 builder.setTitle("标题"); //设置展示信息 builder.setMessage("内容信息"); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "确定按钮",Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "取消按钮",Toast.LENGTH_SHORT).show(); } }); //展示提示框 builder.create().show(); } });
效果如下:

二、复杂对话框
代码:
bu_complex.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder builder=
new AlertDialog.Builder(MainActivity.this);
builder.setTitle("复杂对话框");
builder.setIcon(R.drawable.ic_launcher_background);
builder.setMessage("你喜欢我们的课程吗?");
builder.setPositiveButton("喜欢", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which ) {
Toast.makeText(MainActivity.this,
"那是相当的喜欢",Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("一般般", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,
"还行",Toast.LENGTH_SHORT).show();
}
});
builder.setNeutralButton("不喜欢", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,
"才怪",Toast.LENGTH_SHORT).show();
}
});
builder.show();
}
});
效果:
三.自定义对话框
首先需要在layout中设置好页面布局
<?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:orientation="vertical"
android:gravity="center">
<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:background="@drawable/custom_dialog_title"
android:orientation="horizontal"
android:gravity="center"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<ImageView
android:id="@+id/iv_icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/tip"/>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="标题"
android:textSize="20sp"
android:layout_marginLeft="10dp"/>
</LinearLayout>
<View
android:layout_width="300dp"
android:layout_height="2dp"
android:background="#9b9b9b"/>
<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:background="@drawable/custom_dialog_content">
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="内容展示区"
android:layout_margin="15dp"
android:gravity="center"/>
</LinearLayout>
<View
android:layout_width="300dp"
android:layout_height="2dp"
android:background="#9b9b9b"/>
<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:background="@drawable/custom_dialog_button"
android:orientation="horizontal">
<Button
android:id="@+id/bu_positive"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/custom_dialog_positive"
android:text="确定"
android:textSize="20sp"
android:layout_margin="10dp"
android:textAllCaps="false"/>
<Button
android:id="@+id/bu_negative"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/custom_dialog_negative"
android:text="取消"
android:textSize="20sp"
android:layout_margin="10dp"/>
</LinearLayout>
</LinearLayout>
Java代码:
public class DialogUtil {
private static AlertDialog dialog;
/**
*
* @param activity 上下文对象
* @param icon 标题对象
* @param title 标题展示内容
* @param content 主内容区
* @param positiveText 确定按钮
* @param negativeText 取消按钮
* @param clickListener 按钮点击事件处理接口
*/
public static void showMyAlertDialog(Activity activity,
int icon, String title,
String content, String positiveText,
String negativeText,
final AlertDialogBtnClickListener clickListener){
//创建自定义页面对象view
View view= LayoutInflater.from(activity).inflate(
R.layout.custom_dialog_layout,null);
//获取自定义页面组件
ImageView iv_icon = view.findViewById(R.id.iv_icon);
TextView tv_title= view.findViewById(R.id.tv_title);
TextView tv_content=view.findViewById(R.id.tv_content);
Button bu_positive=view.findViewById(R.id.bu_positive);
Button bu_negative=view.findViewById(R.id.bu_negative);
//设定组件展示内容,相应事件
iv_icon.setImageResource(icon);
tv_title.setText(title);
tv_content.setText(content);
bu_positive.setText(positiveText);
bu_negative.setText(negativeText);
bu_positive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickListener.clickPositive();
dialog.dismiss();
}
});
bu_negative.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickListener.clickNegative();
dialog.dismiss();
}
});
//实例化dialog
AlertDialog.Builder builder=new AlertDialog.Builder(activity);
//设定提示框展示页面
builder.setView(view);
//设定不能在外界取消
builder.setCancelable(false);
dialog=builder.create();
//去掉背景多余内容
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
//dialog展示
dialog.show();
}
public interface AlertDialogBtnClickListener{
void clickPositive();
void clickNegative();
}
/**
* 创建自定义提示框
* @param context 上下文对象
* @param msg 页面提示信息
* @return
*/
public static Dialog createLoadingDialog(Context context,
String msg){
//获取自定义提示框view对象
View view=LayoutInflater.from(context)
.inflate(R.layout.custom_loading_dialog,null);
ImageView img=view.findViewById(R.id.iv_img);
TextView tip=view.findViewById(R.id.tv_tip);
tip.setText(msg);
//图片加载动画效果
Animation animation=
AnimationUtils.loadAnimation(context,R.anim.loading_animation);
img.startAnimation(animation);
//创建提示框并设定样式
Dialog dialog=new Dialog(context,R.style.loading_dialog);
//绑定自定义页面
dialog.setContentView(view);
return dialog;
}
}
MainActivity.java
bu_my.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogUtil.showMyAlertDialog(MainActivity.this,
R.drawable.tip, "my title",
"确定退出吗?",
"sure",
"cancel", new DialogUtil.AlertDialogBtnClickListener() {
@Override
public void clickPositive() {
finish();
}
@Override
public void clickNegative() {
Toast.makeText(MainActivity.this,
"误操作",Toast.LENGTH_SHORT).show();
}
}
);
效果:

浙公网安备 33010602011771号