先显示原生的AlertDialog,再显示自定义的AlertDialog。
思路:2个Button分别打开2中dialog。
效果图:
原生: 自定义:
自定义的步骤:
// 自定义dialog
/**
* 1 创建view:View.inflate(context, R.layout.dialog_login, null);
* 2 设置view:builder.setView(loginView);
* 3 补全 其他逻辑:点击事件
*/
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("这是标题");
builder.setMessage("这是描述信息");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d("tag", "###initDialog()###setPositiveButton");
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d("tag", "###initDialog()###setPositiveButton");
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
二:自定义:
layout:
需要注意的是:
<!-- android:background="@android:color/transparent" 背景仍是黑色的 -->
<!-- android:background="#ffffff" 背景是透明的 -->
问:自定义dialog的布局: 确定+取消 是否也在布局中声明??
答:可以写在自定义的布局中,也可以用原生的确定+取消。
主题:style:android:Theme.Holo.Light.NoActionBar是无actionbar而且是白底;
android:Theme.Holo.Light:白底有黑色actionbar
<?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="wrap_content"
android:layout_gravity="center"
android:background="#ffffff"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_dialog_login"
android:layout_width="300dp"
android:layout_height="30dp"
android:background="#666666"
android:gravity="center_horizontal|center_horizontal"
android:text="设置密码" />
<EditText
android:id="@+id/et_pwd1"
android:layout_width="match_parent"
android:layout_height="40dp"
android:hint="请输入密码" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_ok"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="确定" />
<Button
android:id="@+id/btn_cancle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="取消" />
</LinearLayout>
</LinearLayout>
代码:
View loginView = View.inflate(context, R.layout.dialog_login, null);
final TextView tv_dialog_login = (TextView) loginView
.findViewById(R.id.tv_dialog_login);
final EditText et_pwd1 = (EditText) loginView
.findViewById(R.id.et_pwd1);
Button btn_ok = (Button) loginView.findViewById(R.id.btn_ok);
Button btn_cancle = (Button) loginView.findViewById(R.id.btn_cancle);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(loginView);
tv_dialog_login.setText("设置密码");
final AlertDialog dialog = builder.create();
btn_ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String result = tv_dialog_login.getText().toString().trim();
Log.d("tag", "###customDialog()###确定##您输入的密码是:" + result);
}
});
btn_cancle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("tag", "###customDialog()###取消");
dialog.dismiss();
}
});
dialog.show();
Demo:http://download.youkuaiyun.com/detail/ss1168805219/9497253