android 中的 AlertDialog 对话框

由 AlertDialog.builder 进行创建,创建后使用 show 显示,使用简单,代码如下

对话框的 xml 定义

<? xmlversion="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" >

< TextView
android:id ="@+id/username"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
android:layout_marginLeft
="20dip"
android:layout_marginRight
="20dip"

android:text
="账号"
android:gravity
="left"
android:textAppearance
="?android:attr/textAppearanceMedium"
/>

< EditText
android:id ="@+id/username"
android:layout_height
="wrap_content"
android:layout_width
="fill_parent"
android:layout_marginLeft
="20dip"
android:layout_marginRight
="20dip"
android:scrollHorizontally
="true"
android:autoText
="false"
android:capitalize
="none"
android:gravity
="fill_horizontal"
android:textAppearance
="?android:attr/textAppearanceMedium"
/>

< TextView
android:id ="@+id/password"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
android:layout_marginLeft
="20dip"
android:layout_marginRight
="20dip"
android:text
="密码"
android:gravity
="left"
android:textAppearance
="?android:attr/textAppearanceMedium"

/>

< EditText
android:id ="@+id/password"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content"
android:layout_marginLeft
="20dip"
android:layout_marginRight
="20dip"
android:scrollHorizontally
="true"
android:autoText
="false"
android:capitalize
="none"
android:gravity
="fill_horizontal"
android:password
="true"
/>

</ LinearLayout >

java 代码

packagezziss.android.dialogtest;

importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.app.AlertDialog.Builder;
importandroid.app.Dialog;
importandroid.app.ProgressDialog;
importandroid.content.Context;
importandroid.content.DialogInterface;
importandroid.os.Bundle;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.widget.Toast;

public classDialogTestActivity extendsActivity{
/** Calledwhentheactivityisfirstcreated. */
ProgressDialogm_dialog;
@Override
public voidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// Builderbuilder=newAlertDialog.Builder(DialogTestActivity.this);
// Dialogdialog=builder.create();
// dialog.setTitle("登录提示");
/* Dialogdialog=newAlertDialog.Builder(DialogTestActivity.this)
.setTitle("登录提示")
.setMessage("这里需要登录")
.setPositiveButton("确定",
newDialogInterface.OnClickListener(){

@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
LayoutInflaterfactory=LayoutInflater.from(DialogTestActivity.this);
finalViewDialogView=factory.inflate(R.layout.dialog,null);

AlertDialogdlg=newAlertDialog.Builder(DialogTestActivity.this)
.setTitle("登录框")
.setView(DialogView)
.setPositiveButton("确定",
newDialogInterface.OnClickListener(){

@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
m_dialog=ProgressDialog.show(
DialogTestActivity.this,
"请等待...","正在为您登录...",true);
newThread()
{
publicvoidrun()
{
try
{
sleep(3000);
}
catch(Exceptione)
{
e.printStackTrace();
}
finally
{
m_dialog.dismiss();
}
}
}.start();//endthread
}//endokclick
}
)
.setNegativeButton("取消",
newDialogInterface.OnClickListener(){

@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
DialogTestActivity.this.finish();
}
}
).create();
dlg.show();

};
}

)
.setNeutralButton("退出",
newDialogInterface.OnClickListener(){

@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
DialogTestActivity.this.finish();
}
}
).create();
dialog.show();
*/
initDialogClick();
AlertDialog.Builderbuilder= newAlertDialog.Builder(DialogTestActivity. this);
builder.setTitle("登录对话框");
builder.setMessage("这里需要登录")
.setPositiveButton("确定",dialogclick)
.setNegativeButton("取消",dialogclick);
Dialogdialog=builder.create();
dialog.show();


}

privateDialogInterface.OnClickListenerdialogclick;
privateDialogInterface.OnClickListenerdialogLoginClick;
private voidinitDialogClick()
{
dialogclick= newDialogInterface.OnClickListener(){

@Override
public voidonClick(DialogInterfacedialog, intwhich){
// TODOAuto-generatedmethodstub
if(which==dialog.BUTTON_POSITIVE)
{
showLoginDialog();
}
if(which==dialog.BUTTON_NEGATIVE)
{
showMessage("点击了取消按纽");
}
}
};

dialogLoginClick= newDialogInterface.OnClickListener(){

@Override
public voidonClick(DialogInterfacedialog, intwhich){
// TODOAuto-generatedmethodstub
if(which==dialog.BUTTON_POSITIVE)
{
showProgressDialog();
}
if(which==dialog.BUTTON_NEGATIVE)
{
dialog.dismiss();
}
}
};

} // endinitDialogClick

private voidshowLoginDialog()
{
LayoutInflaterinflater=(LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Viewlogindialog=inflater.inflate(R.layout.dialog, null);
AlertDialoglogin= newAlertDialog.Builder( this)
.setTitle("请登录")
.setView(logindialog)
.setPositiveButton("登录",dialogLoginClick)
.setNegativeButton("取消",dialogLoginClick)
.create();
login.show();
}


private voidshowProgressDialog()
{
m_dialog=ProgressDialog.show(
DialogTestActivity. this,
"请等待...","正在为您登录...", true);
newThread()
{
public voidrun()
{
try
{
sleep(3000);
}
catch(Exceptione)
{
e.printStackTrace();
}
finally
{
m_dialog.dismiss();
}
}
}.start(); // endthread
}

private voidshowMessage(Stringstr)
{
Toasttoast=Toast.makeText( this,str,Toast.LENGTH_SHORT);
toast.show();
}
}

上面的注释中的代码是书上的,不太好看懂,所以就拆开了

点击alertdialog之外其他屏幕,alertdialog消失/dismiss

很简单,设置一下alertDialog的属性就行:

AlertDialog alert = builder.create();
alert.setCanceledOnTouchOutside(true);//详细信息可以查看官方文档
alert.show();

更多相关文章

  1. Android中的各种Dialog
  2. Andorid Dialog 示例【慢慢更新】
  3. Android中的常用的对话框
  4. 样式 主题 对话框 国际化
  5. DatePicker 日期选择控件 DatePickerDialog 日期选择对话框
  6. Android关机界面代码
  7. Android(安卓)用sp存储登录状态以及退出登录
  8. android 日期对话框
  9. android 判断是否有可用网络

随机推荐

  1. Android之加载圈
  2. 高手速成android开源项目【项目篇】
  3. android service 学习(上)
  4. Android(安卓)ContentProvider(内容提供
  5. Android基本界面控件
  6. [置顶] Big Planet Tracks 一个不错的 An
  7. android 硬件加速后webview闪烁问题
  8. Android(安卓)中文 API (90) ―― Window
  9. Android常用代码之普通及系统权限静默安
  10. 再说Android中实现全屏的方法