详解Dialog
标准Dialog
Method 1 构建AlertDialog.Builder
Step 1 实例化一个Builder
AlertDialog.Builder builder = new AlertDialog.Builder(this);
Step2 设置对话框样式 [标题、提示语句、按钮等]
builder.setTitle("提示");
builder.setMessage("你确定要退出吗?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.setNegativeButton("取消",null);
Step 3 展示
//展示方式1:
builder.show();
//展示方式2:
// AlertDialog alertDialog = builder.create();
// alertDialog.show();
Method 2 实例化AlertDialog
这种方式不是很常用,因为setbutton里面没有positive 和negative之分,写在了一个方法里,仅供参考
public void showNormaDialoy(){
AlertDialog dialog = new AlertDialog.Builder(this).create();
dialog.setTitle("提示");
dialog.setMessage("你确定要退出吗?");
//注意此处没有setPositiveButton()以及setNegativeButton()方法
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.show();
}
测试结果
自定义对话框
Step 1 设计自定义对话框样式——dialog_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="300dp"
android:layout_height="300dp"
android:gravity="center_horizontal"
android:background="@drawable/dialog_bg"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="170dp"
android:text="真的要退出吗?"
android:textColor="#e61414"
android:textSize="20sp"
android:textStyle="bold"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_marginTop="40dp"
>
<Button
android:id="@+id/yes_btn"
android:layout_width="100dp"
android:layout_height="40dp"
android:background="@drawable/yes_btn" />
<Button
android:id="@+id/no_btn"
android:layout_width="100dp"
android:layout_height="40dp"
android:layout_marginLeft="40dp"
android:background="@drawable/no_btn" />
</LinearLayout>
</LinearLayout>
Step 2 设置style ——去标题栏 /去背景
<style name="mydialog" parent="android:Theme.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
Step 3 将dialog_layout.xml应用到当前自定义对话框
创建MyDialog类
public class MyDialog extends Dialog {
//用第二个构造方法,以便于传入自己设计的style
public MyDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
setContentView(R.layout.dialog_layout);
...
}
}
Step 4 实例化对话框并展示
MainActivity.java文件中
//参数1:环境上下文;参数2:创建的style
MyDialog myDialog = new MyDialog(this,R.style.mydialog);
myDialog.show();
Step 5 添加点击事件
public MyDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
setContentView(R.layout.dialog_layout);
Button yes_button = findViewById(R.id.yes_btn);
Button no_button = findViewById(R.id.no_btn);
yes_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Dialog中没有finish()方法
System.exit(0);
}
});
no_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//对话框消失
dismiss();
}
});
}
}