对话框的练习(android)
16lz
2021-12-09
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();
更多相关文章
- Android中的各种Dialog
- Andorid Dialog 示例【慢慢更新】
- Android中的常用的对话框
- 样式 主题 对话框 国际化
- DatePicker 日期选择控件 DatePickerDialog 日期选择对话框
- Android关机界面代码
- Android(安卓)用sp存储登录状态以及退出登录
- android 日期对话框
- android 判断是否有可用网络