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. Button代码小写,运行时大写
  2. android 365手机秘书源代码
  3. android studio调试c/c++代码
  4. Android 触摸提示音
  5. Android开发者实用代码片段 与大家分享
  6. 【Android】使用LiveData KTX Builder让代码更简洁
  7. Android中的常用的对话框
  8. 一个简单的iPhone项目及代码
  9. 样式 主题 对话框 国际化

随机推荐

  1. springcloud组件zuul报Forwarding error
  2. 痞子衡嵌入式:揭秘i.MXRT600的ISP模式下用
  3. 18000-3 Mode3协议高频远距离读写器
  4. 痞子衡嵌入式:MCUBootUtility v3.0发布,开
  5. 神策数据盛永根:微信生态——全数据采集和
  6. 痞子衡嵌入式:MCUBootFlasher v3.0发布,为
  7. 痞子衡嵌入式:盘点国内MCU级RISC-V内核IP
  8. 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔
  9. 940万用户数据泄露,450万罚款,国泰航空为“
  10. 痞子衡嵌入式:自识别特性(Auto Probe)可以