对话框大合集
今天我用自己写的一个Demo 和大家详细介绍一个Android中的对话框的使用技巧。
1.确定取消对话框
对话框中有2个按钮 通过调用 setPositiveButton 方法 和 setNegativeButton 方法 可以设置按钮的显示内容以及按钮的监听事件。
我们使用AlerDialog 创建对话框
1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this);
使用builder设置对话框的title button icon 等等
1. builder.setIcon(R.drawable.icon); 2. builder.setTitle(\"你确定要离开吗?\");
3. builder.setPositiveButton(\"确定\4. public void onClick(DialogInterface dialog, int whichButton) { 5. //这里添加点击确定后的逻辑 6. showDialog(\"你选择了确定\"); 7. } 8. });
9. builder.setNegativeButton(\"取消\10. public void onClick(DialogInterface dialog, int whichButton) {
11. //这里添加点击确定后的逻辑 12. showDialog(\"你选择了取消\"); 13. } 14. });
15. builder.create().show(); 16.
这个dialog用于现实onClick后监听的内容信息
1. private void showDialog(String str) {
2. new AlertDialog.Builder(MainDialog.this) 3. .setMessage(str) 4. .show(); 5. }
2.多个按钮信息框
1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 2. builder.setIcon(R.drawable.icon); 3. builder.setTitle(\"投票\");
4. builder.setMessage(\"您认为什么样的内容能吸引您?\");
5. builder.setPositiveButton(\"有趣味的\6. public void onClick(DialogInterface dialog, int whichButton) { 7. showDialog(\"你选择了有趣味的\"); 8. } 9. });
10. builder.setNeutralButton(\"有思想的\11. public void onClick(DialogInterface dialog, int whichButton) { 12. showDialog(\"你选择了有思想的\"); 13. }
14. });
15. builder.setNegativeButton(\"主题强的\16. public void onClick(DialogInterface dialog, int whichButton) { 17. showDialog(\"你选择了主题强的\"); 18. } 19. });
20. builder.create().show();
3.列表框
这个数组用于列表选择
1. final String[] mItems = {\"item0\
1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 2. builder.setTitle(\"列表选择框\");
3. builder.setItems(mItems, new DialogInterface.OnClickListener() { 4. public void onClick(DialogInterface dialog, int which) { 5. //点击后弹出窗口选择了第几项
6. showDialog(\"你选择的id为\" + which + \" , \" + mItems[which]); 7. } 8. });
9. builder.create().show(); 10.
4.单项选择列表框
mSingleChoice 用于记录单选中的ID
1. int mSingleChoiceID = -1;
1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 2.
3. mSingleChoiceID = -1;
4. builder.setIcon(R.drawable.icon); 5. builder.setTitle(\"单项选择\");
6. builder.setSingleChoiceItems(mItems, 0, new DialogInterface.OnClickListener() { 7. public void onClick(DialogInterface dialog, int whichButton) { 8. mSingleChoiceID = whichButton;
9. showDialog(\"你选择的id为\" + whichButton + \" , \" + mItems[whichButton]); 10. } 11. });
12. builder.setPositiveButton(\"确定\13. public void onClick(DialogInterface dialog, int whichButton) { 14. if(mSingleChoiceID > 0) {
15. showDialog(\"你选择的是\" + mSingleChoiceID); 16. } 17. } 18. });
19. builder.setNegativeButton(\"取消\20. public void onClick(DialogInterface dialog, int whichButton) { 21.
22. } 23. });
24. builder.create().show();
5.进度条框
点击进度条框按钮后 开启一个线程计算读取的进度 假设读取结束为 100
Progress在小于100的时候一直在线程中做循环++ 只到读取结束后,停止线程。
1. mProgressDialog = new ProgressDialog(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(\"确定\7. public void onClick(DialogInterface dialog, int whichButton) { 8. //这里添加点击后的逻辑 9. } 10. });
11. mProgressDialog.setButton2(\"取消\12. public void onClick(DialogInterface dialog, int whichButton) {
13. //这里添加点击后的逻辑 14. } 15. });
16. mProgressDialog.show(); 17. new Thread(this).start(); 18.
19. public void run() { 20. int Progress = 0;
21. while(Progress < MAX_PROGRESS) { 22. try {
23. Thread.sleep(100); 24. Progress++;
25. mProgressDialog.incrementProgressBy(1); 26. } catch (InterruptedException e) { 27. // TODO Auto-generated catch block 28. e.printStackTrace(); 29. } 30. 31. } 32. 33. }
6.多项选择列表框
MultiChoiceID 用于记录多选选中的id号 存在ArrayList中 选中后 add 进ArrayList
取消选中后 remove 出ArrayList。
1. ArrayList 1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 2. 3. MultiChoiceID.clear(); 4. builder.setIcon(R.drawable.icon); 5. builder.setTitle(\"多项选择\"); 6. builder.setMultiChoiceItems(mItems, 7. new boolean[]{false, false, false, false, false, false, false}, 8. new DialogInterface.OnMultiChoiceClickListener() { 9. public void onClick(DialogInterface dialog, int whichButton, 10. boolean isChecked) { 11. if(isChecked) { 12. MultiChoiceID.add(whichButton); 13. showDialog(\"你选择的id为\" + whichButton + \" , \" + mItems[whichButton]); 14. }else { 15. MultiChoiceID.remove(whichButton); 16. } 17. 18. } 19. }); 20. builder.setPositiveButton(\"确定\21. public void onClick(DialogInterface dialog, int whichButton) { 22. String str = \"\"; 23. int size = MultiChoiceID.size(); 24. for (int i = 0 ;i < size; i++) { 25. str+= mItems[MultiChoiceID.get(i)] + \26. } 27. showDialog(\"你选择的是\" + str); 28. } 29. }); 30. builder.setNegativeButton(\"取消\31. public void onClick(DialogInterface dialog, int whichButton) { 32. 33. } 34. }); 35. builder.create().show(); 7.自定义布局 讲到自定义布局我就得多说一说了,为什么要多说一说呢? 其实自定义布局在Android的开发中非常重要 因为它能让开发者做出自己五彩缤纷的Activity 而不用去使用系统枯燥的界面。 自定义dialog有什么好处? 比如我们在开发过长当中 要通过介绍系统发送的一个广播弹出一个dialog . 但是dialog必需是基于activity才能呈现出来 如果没有activity 的话 程序就会崩溃。所以我们可以写一个自定义的 dialog 把它定义成一个activity 这样我们收到一条打开dialog的广播后 直接启动这个 activity 程序正常运行~~ 这就是自定义dialog的好处。 注明:下面这个例子只是写了自定义dialog 没有把它单独的写在一个activity中 如果须要的话 可以自己改一下。 1. AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this); 2. LayoutInflater factory = LayoutInflater.from(this); 3. final View textEntryView = factory.inflate(R.layout.test, null); 4. builder.setIcon(R.drawable.icon); 5. builder.setTitle(\"自定义输入框\"); 6. builder.setView(textEntryView); 7. builder.setPositiveButton(\"确定\8. public void onClick(DialogInterface dialog, int whichButton) { 9. 10. EditText userName = (EditText) textEntryView.findViewById(R.id.etUserName); 11. EditText password = (EditText) textEntryView.findViewById(R.id.etPassWord); 12. showDialog(\"姓名 :\" + userName.getText().toString() + \"密码:\" + password.getText().toString() ); 13. } 14. }); 15. builder.setNegativeButton(\"取消\16. public void onClick(DialogInterface dialog, int whichButton) { 17. 18. } 19. }); 20. builder.create().show(); 1. 2. 13. 17. 27. android:layout_below=\"@+id/dialogname\" 28. > 29. 33. 38. 8.读取进度框 显示一个正在转圈的进度条loading 1. mProgressDialog = new ProgressDialog(this); 2. mProgressDialog.setTitle(\"读取ing\"); 3. mProgressDialog.setMessage(\"正在读取中请稍候\"); 4. mProgressDialog.setIndeterminate(true); 5. mProgressDialog.setCancelable(true); 6. mProgressDialog.show();
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务