`
yidongkaifa
  • 浏览: 4052541 次
文章分类
社区版块
存档分类
最新评论

Android入门第九篇之AlertDialog .

 
阅读更多
时隔一年,又要准备做Android的开发了,最近复习和整理一下Android的知识。这次要说的是AlertDialog,这种对话框会经常遇到。AlertDialog跟WIN32开发中的Dialog不一样,AlertDialog是非阻塞的,而阻塞的对话框用的是PopupWindow。

先贴出程序运行的截图:

main.xml的源码:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Buttonandroid:id="@+id/Button01"android:layout_height="wrap_content"android:text="非Layout型对话框"android:layout_width="fill_parent"></Button>
  8. <Buttonandroid:id="@+id/Button02"android:layout_height="wrap_content"android:text="Layout型对话框"android:layout_width="fill_parent"></Button><Viewandroid:id="@+id/View01"android:layout_width="wrap_content"android:layout_height="wrap_content"></View>
  9. </LinearLayout>

下图是非Layout型对话框,直接使用AlertDialog

下图是使用了Layout的对话框,可以自定义控件,实现更复杂的对话框

dialoglayout.xml的源码:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"android:layout_height="wrap_content"
  4. android:orientation="vertical">
  5. <EditTextandroid:layout_height="wrap_content"
  6. android:layout_width="fill_parent"android:layout_marginLeft="20dip"
  7. android:layout_marginRight="20dip"android:textAppearance="?android:attr/textAppearanceMedium"android:id="@+id/edtInput"/>
  8. </LinearLayout>

程序源码:

  1. packagecom.testAlertDialog;
  2. importandroid.app.Activity;
  3. importandroid.app.AlertDialog;
  4. importandroid.content.Context;
  5. importandroid.content.DialogInterface;
  6. importandroid.os.Bundle;
  7. importandroid.view.Gravity;
  8. importandroid.view.LayoutInflater;
  9. importandroid.view.View;
  10. importandroid.view.View.OnClickListener;
  11. importandroid.widget.Button;
  12. importandroid.widget.EditText;
  13. importandroid.widget.PopupWindow;
  14. publicclasstestAlertDialogextendsActivity{
  15. ButtonbtnShowDialog;
  16. ButtonbtnShowDialog_Layout;
  17. /**Calledwhentheactivityisfirstcreated.*/
  18. @Override
  19. publicvoidonCreate(BundlesavedInstanceState){
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.main);
  22. //定义按钮
  23. btnShowDialog=(Button)this.findViewById(R.id.Button01);
  24. btnShowDialog.setOnClickListener(newClickEvent());
  25. btnShowDialog_Layout=(Button)this.findViewById(R.id.Button02);
  26. btnShowDialog_Layout.setOnClickListener(newClickEvent());
  27. }
  28. //统一处理按键事件
  29. classClickEventimplementsOnClickListener{
  30. @Override
  31. publicvoidonClick(Viewv){
  32. //TODOAuto-generatedmethodstub
  33. if(v==btnShowDialog)
  34. showDialog(testAlertDialog.this);
  35. elseif(v==btnShowDialog_Layout)
  36. showDialog_Layout(testAlertDialog.this);
  37. }
  38. }
  39. //显示基本的AlertDialog
  40. privatevoidshowDialog(Contextcontext){
  41. AlertDialog.Builderbuilder=newAlertDialog.Builder(context);
  42. builder.setIcon(R.drawable.icon);
  43. builder.setTitle("Title");
  44. builder.setMessage("Message");
  45. builder.setPositiveButton("Button1",
  46. newDialogInterface.OnClickListener(){
  47. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  48. setTitle("点击了对话框上的Button1");
  49. }
  50. });
  51. builder.setNeutralButton("Button2",
  52. newDialogInterface.OnClickListener(){
  53. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  54. setTitle("点击了对话框上的Button2");
  55. }
  56. });
  57. builder.setNegativeButton("Button3",
  58. newDialogInterface.OnClickListener(){
  59. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  60. setTitle("点击了对话框上的Button3");
  61. }
  62. });
  63. builder.show();
  64. }
  65. //显示基于Layout的AlertDialog
  66. privatevoidshowDialog_Layout(Contextcontext){
  67. LayoutInflaterinflater=LayoutInflater.from(this);
  68. finalViewtextEntryView=inflater.inflate(
  69. R.layout.dialoglayout,null);
  70. finalEditTextedtInput=(EditText)textEntryView.findViewById(R.id.edtInput);
  71. finalAlertDialog.Builderbuilder=newAlertDialog.Builder(context);
  72. builder.setCancelable(false);
  73. builder.setIcon(R.drawable.icon);
  74. builder.setTitle("Title");
  75. builder.setView(textEntryView);
  76. builder.setPositiveButton("确认",
  77. newDialogInterface.OnClickListener(){
  78. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  79. setTitle(edtInput.getText());
  80. }
  81. });
  82. builder.setNegativeButton("取消",
  83. newDialogInterface.OnClickListener(){
  84. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  85. setTitle("");
  86. }
  87. });
  88. builder.show();
  89. }
  90. }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics