提示框,适合简单的提示和操作
没有生命周期
创建
采用support包下的类创建,保证都是最新的样式
字体,按钮等效果都是主题默认的样式
android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(this);
标题
builder.setTitle("标题");
内容
注意:当有了内容后设置单选或多选列表不起作用
builder.setMessage("内容");
图标
在标题左侧
builder.setIcon(R.mipmap.ic_launcher);
显示隐藏
builder.show();
//获得dialog对象
AlertDialog alertDialog = builder.create();
alertDialog.dismiss();
//可以点击空白,或按返回键消失
builder.setCancelable();
//取消监听
builder.setOnCancelListener();
//隐藏监听
builder.setOnDismissListener();
按钮
默认点击按钮后,弹窗隐藏
确认按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
取消按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
其它按钮
在确认和取消之间
builder.setNegativeButton("其它", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
列表
普通列表
builder.setItems(new String[]{"1", "2", "3"}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "hello" + i, Toast.LENGTH_SHORT).show();
}
});
单选列表
//(数据项目,被选中项,点击)
//被选中项设置为-1,将默认不选择任何条目
builder.setSingleChoiceItems(new String[]{"1", "2", "3"}, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "hello" + i, Toast.LENGTH_SHORT).show();
}
});
多选列表
//(数据项目,被选中项目,点击)
//被选中列表可为null
builder.setMultiChoiceItems(new String[]{"1", "2", "3"}, new boolean[]{true, false, false}, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
}
});
自定义列表
builder.setAdapter(adapter,listener);
自定义
添加view
//在message下设置一个布局
builder.setView(view,padding1,padding2,padding3,padding4);
样式
<style name="AppTheme.Dialog.Alert" parent="Theme.AppCompat.Light.Dialog.Alert"></style>
<!--自定义列表弹出的activity的样式 -->
<style name="FloateDialogBottom" type="text/css">
<!--动画设置-->
<item name="android:windowAnimationStyle">@style/AnimBottom</item>
<!--这个不设置的话,可能会出现边框黑线-->
<item name="android:windowContentOverlay">@null</item>
<!--Dialog的windowFrame框为无-->
<item name="android:windowFrame">@null</item>
<!-- 是否浮现在activity之上 -->
<item name="android:windowIsFloating">true</item>
<!--是否半透明-->
<item name="android:windowIsTranslucent">true</item>
<!-- 无标题 -->
<item name="android:windowNoTitle">true</item>
<!-- 背景颜色 @android:color/transparent 透明-->
<item name="android:windowBackground">@android:color/background_light</item>
<!-- 模糊 -->
<item name="android:backgroundDimEnabled">true</item>
</style>
宽度和重心
Window win = dialog.getWindow();
//底部
win.setGravity(Gravity.BOTTOM);
win.getDecorView().setPadding(0, 0, 0, 0);
WindowManager.LayoutParams lp = win.getAttributes();
//宽度填满
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
win.setAttributes(lp);