`
活着,其实是一种心情-Elvin-Lee
  • 浏览: 16101 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

【转】对话框大合集

 
阅读更多
刚开始学习Android不久,今天看到CSDN上这篇文章不错,特地转过来学习学习






1.确定取消对话框


对话框中有2个按钮 通过调用 setPositiveButton 方法 和 setNegativeButton 方法 可以设置按钮的显示内容以及按钮的监听事件



我们使用AlerDialog 创建对话框

  1. AlertDialog.Builderbuilder=newAlertDialog.Builder(MainDialog.this);

使用builder设置对话框的title button icon 等等

  1. builder.setIcon(R.drawable.icon);
  2. builder.setTitle("你确定要离开吗?");
  3. builder.setPositiveButton("确定",newDialogInterface.OnClickListener(){
  4. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  5. //这里添加点击确定后的逻辑
  6. showDialog("你选择了确定");
  7. }
  8. });
  9. builder.setNegativeButton("取消",newDialogInterface.OnClickListener(){
  10. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  11. //这里添加点击确定后的逻辑
  12. showDialog("你选择了取消");
  13. }
  14. });
  15. builder.create().show();

这个dialog用于现实onClick后监听的内容信息

  1. privatevoidshowDialog(Stringstr){
  2. wAlertDialog.Builder(MainDialog.this)
  3. .setMessage(str)
  4. .show();
  5. }



2.多个按钮信息框




  1. AlertDialog.Builderbuilder=newAlertDialog.Builder(MainDialog.this);
  2. builder.setIcon(R.drawable.icon);
  3. builder.setTitle("投票");
  4. builder.setMessage("您认为什么样的内容能吸引您?");
  5. builder.setPositiveButton("有趣味的",newDialogInterface.OnClickListener(){
  6. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  7. showDialog("你选择了有趣味的");
  8. }
  9. });
  10. builder.setNeutralButton("有思想的",newDialogInterface.OnClickListener(){
  11. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  12. showDialog("你选择了有思想的");
  13. }
  14. });
  15. builder.setNegativeButton("主题强的",newDialogInterface.OnClickListener(){
  16. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  17. showDialog("你选择了主题强的");
  18. }
  19. });
  20. builder.create().show();




3.列表框




这个数组用于列表选择

  1. finalString[]mItems={"item0","item1","itme2","item3","itme4","item5","item6"};




  1. AlertDialog.Builderbuilder=newAlertDialog.Builder(MainDialog.this);
  2. builder.setTitle("列表选择框");
  3. builder.setItems(mItems,newDialogInterface.OnClickListener(){
  4. publicvoidonClick(DialogInterfacedialog,intwhich){
  5. //点击后弹出窗口选择了第几项
  6. showDialog("你选择的id为"+which+","+mItems[which]);
  7. }
  8. });
  9. builder.create().show();



4.单项选择列表框



mSingleChoice 用于记录单选中的ID

  1. intmSingleChoiceID=-1;
  1. AlertDialog.Builderbuilder=newAlertDialog.Builder(MainDialog.this);
  2. mSingleChoiceID=-1;
  3. builder.setIcon(R.drawable.icon);
  4. builder.setTitle("单项选择");
  5. builder.setSingleChoiceItems(mItems,0,newDialogInterface.OnClickListener(){
  6. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  7. mSingleChoiceID=whichButton;
  8. showDialog("你选择的id为"+whichButton+","+mItems[whichButton]);
  9. }
  10. });
  11. builder.setPositiveButton("确定",newDialogInterface.OnClickListener(){
  12. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  13. if(mSingleChoiceID>0){
  14. showDialog("你选择的是"+mSingleChoiceID);
  15. }
  16. }
  17. });
  18. builder.setNegativeButton("取消",newDialogInterface.OnClickListener(){
  19. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  20. }
  21. });
  22. builder.create().show();




5.进度条框



点击进度条框按钮后 开启一个线程计算读取的进度 假设读取结束为 100
Progress在小于100的时候一直在线程中做循环++ 只到读取结束后,停止线程。
  1. mProgressDialog=newProgressDialog(MainDialog.this);
  2. mProgressDialog.setIcon(R.drawable.icon);
  3. mProgressDialog.setTitle("进度条窗口");
  4. mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
  5. mProgressDialog.setMax(MAX_PROGRESS);
  6. mProgressDialog.setButton("确定",newDialogInterface.OnClickListener(){
  7. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  8. //这里添加点击后的逻辑
  9. }
  10. });
  11. mProgressDialog.setButton2("取消",newDialogInterface.OnClickListener(){
  12. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  13. //这里添加点击后的逻辑
  14. }
  15. });
  16. mProgressDialog.show();
  17. newThread(this).start();
  18. icvoidrun(){
  19. intProgress=0;
  20. while(Progress<MAX_PROGRESS){
  21. try{
  22. Thread.sleep(100);
  23. Progress++;
  24. mProgressDialog.incrementProgressBy(1);
  25. }catch(InterruptedExceptione){
  26. //TODOAuto-generatedcatchblock
  27. e.printStackTrace();
  28. }
  29. }


6.多项选择列表框




MultiChoiceID 用于记录多选选中的id号 存在ArrayList中
选中后 add 进
ArrayList
取消选中后 remove 出ArrayList


  1. ArrayList<Integer>MultiChoiceID=newArrayList<Integer>();

  1. AlertDialog.Builderbuilder=newAlertDialog.Builder(MainDialog.this);
  2. MultiChoiceID.clear();
  3. builder.setIcon(R.drawable.icon);
  4. builder.setTitle("多项选择");
  5. builder.setMultiChoiceItems(mItems,
  6. newboolean[]{false,false,false,false,false,false,false},
  7. newDialogInterface.OnMultiChoiceClickListener(){
  8. publicvoidonClick(DialogInterfacedialog,intwhichButton,
  9. booleanisChecked){
  10. if(isChecked){
  11. MultiChoiceID.add(whichButton);
  12. showDialog("你选择的id为"+whichButton+","+mItems[whichButton]);
  13. }else{
  14. MultiChoiceID.remove(whichButton);
  15. }
  16. }
  17. });
  18. builder.setPositiveButton("确定",newDialogInterface.OnClickListener(){
  19. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  20. Stringstr="";
  21. intsize=MultiChoiceID.size();
  22. for(inti=0;i<size;i++){
  23. str+=mItems[MultiChoiceID.get(i)]+",";
  24. }
  25. showDialog("你选择的是"+str);
  26. }
  27. });
  28. builder.setNegativeButton("取消",newDialogInterface.OnClickListener(){
  29. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  30. }
  31. });
  32. builder.create().show();


7.自定义布局



讲到自定义布局我就得多说一说了,为什么要多说一说呢?
其实自定义布局在Android的开发中非常重要 因为它能让开发者做出自己五彩缤纷的Activity 而不用去使用系统枯燥的界面。

自定义dialog有什么好处?

比如我们在开发过长当中 要通过介绍系统发送的一个广播弹出一个dialog . 但是dialog必需是基于activity才能呈现出来 如果没有activity 的话 程序就会崩溃。所以我们可以写一个自定义的 dialog 把它定义成一个activity
这样我们收到一条打开dialog的广播后 直接启动这个 activity 程序正常运行~~

这就是自定义dialog的好处。

注明:下面这个例子只是写了自定义dialog 没有把它单独的写在一个activity中 如果须要的话 可以自己改一下。
  1. AlertDialog.Builderbuilder=newAlertDialog.Builder(MainDialog.this);
  2. LayoutInflaterfactory=LayoutInflater.from(this);
  3. finalViewtextEntryView=factory.inflate(R.layout.test,null);
  4. builder.setIcon(R.drawable.icon);
  5. builder.setTitle("自定义输入框");
  6. builder.setView(textEntryView);
  7. builder.setPositiveButton("确定",newDialogInterface.OnClickListener(){
  8. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  9. EditTextuserName=(EditText)textEntryView.findViewById(R.id.etUserName);
  10. EditTextpassword=(EditText)textEntryView.findViewById(R.id.etPassWord);
  11. showDialog("姓名:"+userName.getText().toString()+"密码:"+password.getText().toString());
  12. }
  13. });
  14. builder.setNegativeButton("取消",newDialogInterface.OnClickListener(){
  15. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  16. }
  17. });
  18. builder.create().show();



  1. <spanstyle="color:#000000;"><?xmlversion="1.0"encoding="utf-8"?>
  2. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_height="wrap_content"
  4. android:layout_width="wrap_content"
  5. android:orientation="horizontal"
  6. android:id="@+id/dialog">
  7. <LinearLayout
  8. android:layout_height="wrap_content"
  9. android:layout_width="wrap_content"
  10. android:orientation="horizontal"
  11. android:id="@+id/dialogname">
  12. <TextViewandroid:layout_height="wrap_content"
  13. android:layout_width="wrap_content"
  14. android:id="@+id/tvUserName"
  15. android:text="姓名:"/>
  16. <EditTextandroid:layout_height="wrap_content"
  17. android:layout_width="wrap_content"
  18. android:id="@+id/etUserName"
  19. android:minWidth="200dip"/>
  20. </LinearLayout>
  21. <LinearLayout
  22. android:layout_height="wrap_content"
  23. android:layout_width="wrap_content"
  24. android:orientation="horizontal"
  25. android:id="@+id/dialognum"
  26. android:layout_below="@+id/dialogname"
  27. >
  28. <TextViewandroid:layout_height="wrap_content"
  29. android:layout_width="wrap_content"
  30. android:id="@+id/tvPassWord"
  31. android:text="密码:"/>
  32. <EditTextandroid:layout_height="wrap_content"
  33. android:layout_width="wrap_content"
  34. android:id="@+id/etPassWord"
  35. android:minWidth="200dip"/>
  36. </LinearLayout>
  37. </RelativeLayout></span>

8.读取进度框

显示一个正在转圈的进度条loading

  1. mProgressDialog=newProgressDialog(this);
  2. mProgressDialog.setTitle("读取ing");
  3. mProgressDialog.setMessage("正在读取中请稍候");
  4. mProgressDialog.setIndeterminate(true);
  5. mProgressDialog.setCancelable(true);
  6. mProgressDialog.show();





分享到:
评论

相关推荐

    android对话框大合集

    在Android开发中,对话框(Dialog)是一种常见的用户交互组件,用于向用户显示临时信息或者进行简单的用户操作选择。本文将深入探讨Android对话框的多种类型及其使用技巧,旨在帮助开发者更好地理解和应用这一功能。...

    excl转pdf,pdf 多合一

    这在处理大量PDF文档,如报告集、手册或试卷合集时非常有用。以下是一些合并PDF的方法: 1. **使用Adobe Acrobat Pro**:打开软件,选择“工具”&gt;“合并文件”,然后添加你需要合并的PDF文件,调整顺序,最后点击...

    Word2021使用技巧大合集.docx

    - 在弹出的“数字”对话框中选择“数字类型”为“壹、贰、叁……”等中文数字版式。 - 单击“确定”,数字将被转换为中文大写金额。 #### 5. 去掉自动编号功能 对于不喜欢Word自动编号功能的用户来说,可以通过以下...

    [Word基础教程合集一]图片旋转.docx

    - 在"设置图片格式"对话框的"大小"选项卡中,你会看到一个"旋转"部分,这里可以输入你想要的旋转度数,精确调整图片的旋转角度。设置完成后点击"确定",图片将按照设定的角度旋转。 3. **图片工具栏旋转法**: - ...

    VC MFC操作Excel 20个 源代码合集

    本资源“VC MFC操作Excel 20个源代码合集”汇集了20个示例,涵盖了从SQL数据库导入数据到Excel,从Excel导出数据到SQL,以及设置Excel公式等多种实用场景,为开发者提供了一个丰富的学习和参考资源。 1. **Excel...

    Office编程手册合集(CHM).rar

    例如,`MsgBox`函数用于弹出一个对话框显示信息,而`Len`函数则用于计算字符串的长度。这些函数在编写脚本时大大简化了任务,提供了模块化的编程方式。 属性则定义了对象的状态或特征。例如,`Font`属性可以用来...

    超经典CAD lisp程序集锦

    CAD(Computer-Aided Design)是计算机辅助设计的缩写,是一种广泛应用于工程、建筑、产品设计等领域的技术。LISP(List Processing)语言在CAD领域中有着特殊的应用,主要是通过扩展CAD软件的功能来提高设计效率。...

    网页效果合集1-JS脚本等

    在"网页效果合集1-JS脚本等"这个压缩包中,包含了各种实用的JS脚本和效果示例,旨在帮助开发者创建吸引人的用户体验。 1. **JS弹出对话框源代码下载**: 弹出对话框是网页中常见的交互元素,用于提示用户信息或...

    Windows7 Icon系统图标合集

    合集中涵盖了Windows 7系统的各个方面的图标,如文件类型(如文档、图片、音乐、视频等)、操作状态(如错误、警告、成功等)、系统组件(如网络、设备驱动器、控制面板等)以及用户界面元素(如窗口、菜单、对话框...

    JS函数集合大全

    - `window.confirm()`:显示一个确认对话框,用户可以选择确认或取消。 ### 23. 提示输入框 - `window.prompt()`:弹出一个对话框让用户输入信息。 ### 24. 设置当前页面URL - `window.location.href="URL"`:更改...

    经典C#WinForm实例源码合集(200个).zip

    经典C#WinForm实例源码合集(200个): 1. **窗体技巧**: - 在这里,你将找到关于如何创建、布局和自定义Windows窗体的代码示例。这可能包括设置窗体大小、位置、透明度,以及添加各种事件处理程序,如按钮点击、...

    [Word基础教程合集一]使用框架切分文档.docx

    ### Word基础教程合集一:使用框架切分文档 #### 一、从Word文档提取所有标题(不包括标题下的内容) 在Word文档中提取标题是一个非常实用的功能,尤其是在需要整理文档大纲或者创建导航链接的时候。以下步骤展示...

    [Word基础教程合集一]表格公式运算.docx

    Word中的表格功能虽然不如Excel那样强大,...了解以上知识点后,你就能在Word中有效地进行简单的数学计算和数据分析,而不必每次都转到Excel。熟练掌握这些技巧,可以大大提高工作效率,特别是在处理简短的统计数据时。

    100个+非常犀利的javascript特效合集

    7. **弹出窗口和提示**:JavaScript可以创建模态对话框、提示框和通知,用于显示重要信息或者用户交互。 8. **拖放功能**:通过JavaScript可以实现拖放操作,让用户能够自由移动页面元素,提升操作便捷性。 9. **...

    authorware 86个u32外部函数合集

    这些U32函数库是Authorware开发者的重要资源,它们极大地丰富了Authorware的编程语义,使得开发者能够构建功能更强大、交互性更强的多媒体应用。通过深入理解和熟练运用这些U32函数,开发者可以创造出更加专业且用户...

    Qt系列教程合集

    3. **Qt Creator登录对话框**:创建自定义的登录对话框,涉及输入验证和事件处理。 4. **Qt Creator添加菜单图标**:为应用添加菜单项并设置图标,提升用户体验。 附录部分介绍了两种不同的资源文件添加方法,包括...

    Excel教程2016合集(应用技巧).docx

    - 或者使用自定义格式,通过“格式单元格”对话框设置特定格式 3. **按名单批量创建文件夹** - 当需要创建大量文件夹并按特定名称(如员工名单)命名时,可以借助Excel和批处理文件实现: - 在Excel中列出员工...

    文件传输合集

    MFC的CDataExchange类和DDX(Dialog Data Exchange)机制则帮助开发者轻松管理对话框中的控件与数据的交互,使得用户在界面上的操作能实时反映到文件传输的进程。 接着,我们转向Java。Java是一种跨平台的编程语言...

    eclipse-jee-photon-R汉化包合集

    "基础汉化"指的是对Eclipse IDE的基本组件、菜单、对话框、提示信息等内容进行的翻译,比如项目管理、源代码编辑器、构建工具、调试器等。这些基础功能的汉化,使得开发者在日常编程工作中可以更加流畅地操作。 而...

    js网页特效合集

    在“js网页特效合集”中,我们通常会找到一系列使用JavaScript实现的炫酷视觉效果,这些特效能极大地提升网页的吸引力和用户体验。 1. **动态加载**:JavaScript 可以实现内容的动态加载,比如图片懒加载技术,只有...

Global site tag (gtag.js) - Google Analytics