一、界面效果
运行界面
---------------------------------------------------------------------------------------
部分效果
自定义登录对话框
圆形(转圈)进度条
长形进度条
多选按钮对话框
单选按钮对话框
带多个按钮的提示对话框
带确定取消按钮的提示对话框
---------------------------------------------------------------------------------------------------------
二、知识点
1 AlertDialog.Builder属性
* setTitle:为对话框设置标题;
* setIcon :为对话框设置图标;
* setMessage:为对话框设置内容;
* setView : 给对话框设置自定义样式;
* setItems:设置对话框要显示的一个list,一般用于显示几个命令时;
* setMultiChoiceItems:用来设置对话框显示一系列的复选框;
* setNeutralButton :响应中立行为的点击;
* setPositiveButton :响应Yes/Ok的点击;
* setNegativeButton :响应No/Cancel的点击;
* create :创建对话框;
* show :显示对话框;
2 ProgressDialog属性
*setProgressStyle: 设置进度条风格,风格为圆形,旋转的;
*setTitlt: 设置ProgressDialog 标题;
*setMessage: 设置ProgressDialog提示信息;
*setIcon: 设置ProgressDialog标题图标;
*setIndeterminate: 设置ProgressDialog 的进度条是否不明确;
*setCancelable: 设置ProgressDialog 是否可以按返回键取消;
*setButton: 设置ProgressDialog 的一个Button(需要监听Button事件);
*show: 显示ProgressDialog。
-----------------------------------------------------------------------------------------
三、源码
1 布局文件:dialog_demo.xml
01 | <STRONG><?xml version="1.0" encoding="utf-8"?> | |
02 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
03 | android:layout_width="fill_parent" | |
04 | android:layout_height="wrap_content" |
05 | android:orientation="vertical" > | |
06 |
|
07 | <TextView | |
08 | android:layout_width="fill_parent" |
09 | android:layout_height="wrap_content" | |
10 | android:gravity="center_horizontal" |
11 | android:paddingBottom="10dp" | |
12 | android:paddingTop="8dp" |
13 | android:text="SkySeraph Android学习专题:Dialog" | |
14 | android:textColor="#FFFF00" |
15 | android:textSize="15dp" > | |
16 | </TextView> |
17 |
| |
18 | <LinearLayout |
19 | android:layout_width="fill_parent" | |
20 | android:layout_height="wrap_content" |
21 | android:layout_gravity="center" | |
22 | android:orientation="vertical" > |
23 |
| |
24 | <Button |
25 | android:id="@+id/dialg_demo_btn01" | |
26 | android:layout_width="fill_parent" |
27 | android:layout_height="wrap_content" | |
28 | android:text="简单提示对话框" |
29 | android:textSize="12dp" /> | |
30 |
|
31 | <Button | |
32 | android:id="@+id/dialg_demo_btn02" |
33 | android:layout_width="fill_parent" | |
34 | android:layout_height="wrap_content" |
35 | android:text="带确定取消按钮的提示对话框" | |
36 | android:textSize="12dp" /> |
37 |
| |
38 | <Button |
39 | android:id="@+id/dialg_demo_btn03" | |
40 | android:layout_width="fill_parent" |
41 | android:layout_height="wrap_content" | |
42 | android:text="带多个按钮的提示对话框" |
43 | android:textSize="12dp" /> | |
44 |
|
45 | <Button | |
46 | android:id="@+id/dialg_demo_btn04" |
47 | android:layout_width="fill_parent" | |
48 | android:layout_height="wrap_content" |
49 | android:text="单选按钮对话框" | |
50 | android:textSize="12dp" /> |
51 |
| |
52 | <Button |
53 | android:id="@+id/dialg_demo_btn05" | |
54 | android:layout_width="fill_parent" |
55 | android:layout_height="wrap_content" | |
56 | android:text="多选按钮对话框" |
57 | android:textSize="12dp" /> | |
58 |
|
59 | <Button | |
60 | android:id="@+id/dialg_demo_btn06" |
61 | android:layout_width="fill_parent" | |
62 | android:layout_height="wrap_content" |
63 | android:text="列表对话框" |
64 | android:textSize="12dp" /> |
65 |
| |
66 | <Button |
67 | android:id="@+id/dialg_demo_btn07" | |
68 | android:layout_width="fill_parent" |
69 | android:layout_height="wrap_content" | |
70 | android:text="自定义对话框" |
71 | android:textSize="12dp"/> | |
72 |
|
73 | <Button | |
74 | android:id="@+id/dialg_demo_btn08" |
75 | android:layout_width="fill_parent" | |
76 | android:layout_height="wrap_content" |
77 | android:text="长形进度条" |
78 | android:textSize="12dp"/> |
79 |
| |
80 | <Button |
81 | android:id="@+id/dialg_demo_btn09" | |
82 | android:layout_width="fill_parent" |
83 | android:layout_height="wrap_content" | |
84 | android:text="圆形(转圈)进度条" |
85 | android:textSize="12dp"/> | |
86 |
|
87 | <Button | |
88 | android:id="@+id/dialg_demo_btn10" |
89 | android:layout_width="fill_parent" | |
90 | android:layout_height="wrap_content" |
91 | android:text="..." | |
92 | android:textSize="12dp" /> |
93 |
| |
94 | </LinearLayout> |
95 |
| |
96 | </LinearLayout></STRONG> |
2 java代码:dialog_demo.java
001 | public class dialog_demo extends Activity | |
002 | { |
003 | private static final int MAX_PROGRESS = 100; //进度条最大数 |
004 | private ProgressDialog mProgressDialog = null; //进度条 |
005 | final String[] m_Items = {"Frist","Second","Third"}; | |
006 | int mSingleChoiceID = -1; //记录单选中的ID |
007 | ArrayList <Integer>MultiChoiceID = new ArrayList <Integer>();//记录多选选中的id号 | |
008 |
|
009 | // | ||
010 | @Override |
011 | protected void onCreate(Bundle savedInstanceState) | |
012 | { |
013 | // TODO Auto-generated method stub | |
014 | super.onCreate(savedInstanceState); |
015 | setContentView(R.layout.dialog_demo); | |
016 | findViews(); |
017 | } | |
018 |
|
019 | // | ||
020 | private void findViews() |
021 | { | ||
022 | // // |
023 | /* 【简单提示对话框】 */ | |
024 | Button btn1 = (Button) findViewById(R.id.dialg_demo_btn01); |
025 | btn1.setOnClickListener(new OnClickListener() | |
026 | { |
027 | public void onClick(View v) | |
028 | { |
029 | // TODO Auto-generated method stub |
030 | new AlertDialog.Builder(dialog_demo.this).setTitle("简单提示对话框").setMessage("这是提示信息") |
031 | .show(); | |
032 | return; |
033 | } | |
034 | }); |
035 | // // | ||
036 | /* 【带确定取消按钮的提示对话框】 */ |
037 | Button btn2 = (Button) findViewById(R.id.dialg_demo_btn02); | |
038 | btn2.setOnClickListener(new OnClickListener() |
039 | { | |
040 | public void onClick(View v) |
041 | { | |
042 | // TODO Auto-generated method stub |
043 | AlertDialog.Builder dialog02 = new AlertDialog.Builder(dialog_demo.this); |
044 | dialog02.setTitle("带确定取消按钮的提示对话框"); |
045 | dialog02.setIcon(R.drawable.qq); |
046 | dialog02.setMessage("这是提示内容"); |
047 | dialog02.setPositiveButton("确定", new DialogInterface.OnClickListener() | |
048 | { |
049 | public void onClick(DialogInterface dialoginterface, int which) | |
050 | { |
051 | Toast.makeText(dialog_demo.this, "你选择了确定", Toast.LENGTH_LONG).show(); | ||
052 | } |
053 | }); | |
054 | dialog02.setNegativeButton("取消", new DialogInterface.OnClickListener() |
055 | { | |
056 | public void onClick(DialogInterface dialoginterface, int which) |
057 | { | ||
058 | Toast.makeText(dialog_demo.this, "你选择了取消", Toast.LENGTH_LONG).show(); |
059 | } | |
060 | }); |
061 | dialog02.create().show(); | |
062 | return; |
063 | } | |
064 | }); |
065 | // // | ||
066 | /* 【带多个按钮的提示对话框】 */ |
067 | Button btn3 = (Button) findViewById(R.id.dialg_demo_btn03); | |
068 | btn3.setOnClickListener(new OnClickListener() |
069 | { | |
070 | public void onClick(View v) |
071 | { | |
072 | // TODO Auto-generated method stub |
073 | AlertDialog.Builder dialog03 = new AlertDialog.Builder(dialog_demo.this); | |
074 | dialog03.setIcon(R.drawable.img1); |
075 | dialog03.setTitle("带多个按钮的提示对话框"); |
076 | dialog03.setMessage("你最喜欢的球类运动是什么呢?"); |
077 | dialog03.setPositiveButton("篮球", new DialogInterface.OnClickListener() | |
078 | { |
079 | public void onClick(DialogInterface dialoginterface, int which) | |
080 | { |
081 | showDialog("篮球很不错"); | |
082 | } |
083 | }); | |
084 | dialog03.setNeutralButton("乒乓球", new DialogInterface.OnClickListener() |
085 | { | |
086 | public void onClick(DialogInterface dialoginterface, int which) |
087 | { | |
088 | showDialog("乒乓球很不错"); |
089 | } | |
090 | }); |
091 | dialog03.setNegativeButton("足球", new DialogInterface.OnClickListener() | |
092 | { |
093 | public void onClick(DialogInterface dialoginterface, int which) | |
094 | { |
095 | showDialog("足球很不错"); | |
096 | } |
097 | }); | |
098 | dialog03.create().show(); |
099 | return; | |
100 | } |
101 | }); | ||
102 | // // |
103 | /*【单选按钮对话框】*/ | |
104 | Button btn4 = (Button) findViewById(R.id.dialg_demo_btn04); |
105 | btn4.setOnClickListener(new OnClickListener() | |
106 | { |
107 | public void onClick(View v) | |
108 | { |
109 | // TODO Auto-generated method stub | |
110 | mSingleChoiceID = -1; |
111 | AlertDialog.Builder dialog04 = new AlertDialog.Builder(dialog_demo.this); | |
112 | dialog04.setTitle("单选按妞"); |
113 | dialog04.setSingleChoiceItems(m_Items, 0, new DialogInterface.OnClickListener() | ||
114 | { |
115 | public void onClick(DialogInterface dialog, int whichButton) | |
116 | { |
117 | mSingleChoiceID = whichButton; |
118 | showDialog("你选择的id为" + whichButton + " , " + m_Items[whichButton]); |
119 | } | |
120 | }); |
121 | dialog04.setPositiveButton("确定", new DialogInterface.OnClickListener() | |
122 | { |
123 | public void onClick(DialogInterface dialog, int whichButton) | |
124 | { |
125 | if (mSingleChoiceID > 0) | |
126 | { |
127 | showDialog("你选择的是" + mSingleChoiceID); | ||
128 | } |
129 | } | |
130 | }); |
131 | dialog04.setNegativeButton("取消", new DialogInterface.OnClickListener() | |
132 | { |
133 | public void onClick(DialogInterface dialog, int whichButton) | |
134 | { |
135 |
| |
136 | } |
137 | }); | |
138 | dialog04.create().show(); |
139 | return; | |
140 | } |
141 | }); | ||
142 | // // |
143 | /*【多选按钮对话框】*/ | |
144 | Button btn5 = (Button) findViewById(R.id.dialg_demo_btn05); |
145 | btn5.setOnClickListener(new OnClickListener() | |
146 | { |
147 | public void onClick(View v) | |
148 | { |
149 | // TODO Auto-generated method stub | |
150 | MultiChoiceID.clear(); |
151 | AlertDialog.Builder dialog05 = new AlertDialog.Builder(dialog_demo.this); | |
152 | dialog05.setTitle("多选按钮"); |
153 | dialog05.setMultiChoiceItems(m_Items, new boolean[] | ||
154 | { false, false, false}, |
155 | new DialogInterface.OnMultiChoiceClickListener() | |
156 | { |
157 | public void onClick(DialogInterface dialog, int whichButton, | |
158 | boolean isChecked) |
159 | { | ||
160 | if (isChecked) |
161 | { | |
162 | MultiChoiceID.add(whichButton); |
163 | showDialog("你选择的id为" + whichButton + " , " | |
164 | + m_Items[whichButton]); |
165 | } else |
166 | { |
167 | MultiChoiceID.remove(whichButton); | |
168 | } |
169 |
| |
170 | } |
171 | }); | |
172 | dialog05.create().show(); |
173 | return; | |
174 | } |
175 | }); | ||
176 | // // |
177 | /*【列表框对话框】*/ | |
178 | Button btn6 = (Button) findViewById(R.id.dialg_demo_btn06); |
179 | btn6.setOnClickListener(new OnClickListener() | |
180 | { |
181 | public void onClick(View v) | |
182 | { |
183 | // TODO Auto-generated method stub |
184 | AlertDialog.Builder dialog06 = new AlertDialog.Builder(dialog_demo.this); |
185 | dialog06.setTitle("列表框"); | |
186 | dialog06.setItems(m_Items, new DialogInterface.OnClickListener() |
187 | { | |
188 | public void onClick(DialogInterface dialog, int which) |
189 | { | |
190 | // 点击后弹出窗口选择了第几项 |
191 | showDialog("你选择的id为" + which + " , " + m_Items[which]); | |
192 | } |
193 | }); | |
194 | dialog06.create().show(); |
195 | return; | |
196 | } |
197 | }); | ||
198 | // // |
199 | /*【自定义登录对话框】*/ | |
200 | Button btn7 = (Button) findViewById(R.id.dialg_demo_btn07); |
201 | btn7.setOnClickListener(new OnClickListener() | |
202 | { |
203 | public void onClick(View v) | |
204 | { |
205 | // TODO Auto-generated method stub | |
206 | LayoutInflater factory = LayoutInflater.from(dialog_demo.this); |
207 | final View view = factory.inflate(R.layout.dialog_demo_login, null);// 获得自定义对话框 | |
208 |
|
209 | AlertDialog.Builder dialog07 = new AlertDialog.Builder(dialog_demo.this); |
210 | dialog07.setIcon(R.drawable.qq); |
211 | dialog07.setTitle("自定义登录对话框"); | |
212 | dialog07.setView(view); |
213 | dialog07.setPositiveButton("确定", new DialogInterface.OnClickListener() | |
214 | { |
215 | public void onClick(DialogInterface dialog, int whichButton) | |
216 | { |
217 |
| |
218 | EditText userName = (EditText) view |
219 | .findViewById(R.id.dialog_demo_loginETUserName); | |
220 | EditText password = (EditText) view |
221 | .findViewById(R.id.dialog_demo_loginETPassWord); | |
222 | showDialog("姓名 :" + userName.getText().toString() + "密码:" |
223 | + password.getText().toString()); | ||
224 | } |
225 | }); | |
226 | dialog07.setNegativeButton("取消", new DialogInterface.OnClickListener() |
227 | { | |
228 | public void onClick(DialogInterface dialog, int whichButton) |
229 | { | ||
230 | //Toast.makeText(dialog_demo.this, "你选择了取消", Toast.LENGTH_LONG).show(); |
231 | showDialog("你选择了取消"); | |
232 | } |
233 | }); | |
234 | dialog07.create().show(); |
235 | return; | |
236 | } |
237 | }); | ||
238 | // // |
239 | Button btn8 = (Button) findViewById(R.id.dialg_demo_btn08); | |
240 | btn8.setOnClickListener(new OnClickListener() |
241 | { | |
242 | public void onClick(View v) |
243 | { | |
244 | // TODO Auto-generated method stub |
245 | mProgressDialog = new ProgressDialog(dialog_demo.this);//创建ProgressDialog对象 | |
246 | mProgressDialog.setIcon(R.drawable.qq);// 设置ProgressDialog标题 图标 |
247 | mProgressDialog.setTitle("进度条窗口");// 设置ProgressDialog标题 | |
248 | mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条风格,风格为长形 |
249 | mProgressDialog.setMax(MAX_PROGRESS);// 设置ProgressDialo进度条进度 | |
250 | mProgressDialog.setButton("确定", new DialogInterface.OnClickListener() |
251 | { | |
252 | public void onClick(DialogInterface dialog, int whichButton) |
253 | { | |
254 | // 这里添加点击后的逻辑 |
255 | } | |
256 | }); |
257 | mProgressDialog.setButton2("取消", new DialogInterface.OnClickListener() | |
258 | { |
259 | public void onClick(DialogInterface dialog, int whichButton) | |
260 | { |
261 | // 这里添加点击后的逻辑 | |
262 | } |
263 | }); | |
264 | mProgressDialog.show(); |
265 | new Thread() | |
266 | { |
267 | @Override | |
268 | public void run() |
269 | { | |
270 | int Progress = 0; |
271 | while (Progress < MAX_PROGRESS) | |
272 | { |
273 | try | ||
274 | { |
275 | mProgressDialog.setProgress(Progress++); | |
276 | //mProgressDialog.incrementProgressBy(1); |
277 | Thread.sleep(100); | |
278 | } catch (Exception e) |
279 | { | ||
280 | // TODO Auto-generated catch block |
281 | mProgressDialog.cancel(); | |
282 | //e.printStackTrace(); |
283 | } |
284 | } |
285 | }; |
286 | }.start(); |
287 | return; | |
288 | } |
289 | }); | ||
290 | // // |
291 | /*【圆形(转圈)进度条】*/ | |
292 | Button btn9 = (Button) findViewById(R.id.dialg_demo_btn09); |
293 | btn9.setOnClickListener(new OnClickListener() | |
294 | { |
295 | public void onClick(View v) | |
296 | { |
297 | // TODO Auto-generated method stub |
298 | mProgressDialog = new ProgressDialog(dialog_demo.this);//创建ProgressDialog对象 |
299 | mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); //设置进度条风格,风格为圆形,旋转的 | |
300 | mProgressDialog.setTitle("读取ing...");// 设置ProgressDialog标题 |
301 | mProgressDialog.setMessage("正在读取中请稍候...");// 设置ProgressDialog提示信息 | |
302 | mProgressDialog.setIndeterminate(true);//设置ProgressDialog 的进度条不明确 |
303 | mProgressDialog.setCancelable(true);// 设置ProgressDialog 可以按退回键取消 | |
304 | mProgressDialog.setButton("确定", new DialogInterface.OnClickListener() |
305 | { | |
306 | public void onClick(DialogInterface dialog, int whichButton) |
307 | { | |
308 | // 这里添加点击后的逻辑 |
309 | } | |
310 | }); |
311 | mProgressDialog.show();// 让ProgressDialog显示 | |
312 | return; |
313 | } | |
314 | }); |
315 | // // | ||
316 | /*【带补充对话框】*/ |
317 | Button btn10 = (Button) findViewById(R.id.dialg_demo_btn10); | |
318 | btn10.setOnClickListener(new OnClickListener() |
319 | { | |
320 | public void onClick(View v) |
321 | { | |
322 | // TODO Auto-generated method stub |
323 | return; | |
324 | } |
325 | }); | ||
326 | // // |
327 | } | |
328 |
|
329 | // | ||
330 | /*显示子函数*/ |
331 | private void showDialog(String str) | |
332 | { |
333 | new AlertDialog.Builder(dialog_demo.this).setMessage(str).show(); |
334 | // Toast.makeText(dialog_demo.this, str, Toast.LENGTH_LONG).show(); |
335 | } | ||
336 | // |
337 | } |
3 自定义登录对话框:dialog_demo_login.xml
01 | <?xml version="1.0" encoding="utf-8"?> | |
02 | <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" |
03 | android:id="@+id/dialog_demo_login" | |
04 | android:layout_width="fill_parent" |
05 | android:layout_height="fill_parent" | |
06 | android:orientation="vertical" > |
07 |
| |
08 | <TextView |
09 | android:id="@+id/dialog_demo_loginTVUserName" | |
10 | android:layout_width="wrap_content" |
11 | android:layout_height="wrap_content" | |
12 | android:text="姓名:" |
13 | android:textSize="18dp"> | |
14 | </TextView> |
15 |
| |
16 | <EditText |
17 | android:id="@+id/dialog_demo_loginETUserName" | |
18 | android:layout_width="wrap_content" |
19 | android:layout_height="wrap_content" | |
20 | android:text="" |
21 | android:textSize="18dp" > | |
22 | </EditText> |
23 |
| |
24 | <TextView |
25 | android:id="@+id/dialog_demo_loginTVPassWord" | |
26 | android:layout_width="wrap_content" |
27 | android:layout_height="wrap_content" | |
28 | android:text="密码:" |
29 | android:textSize="18dp" > | |
30 | </TextView> |
31 |
| |
32 | <EditText |
33 | android:id="@+id/dialog_demo_loginETPassWord" | |
34 | android:layout_width="wrap_content" |
35 | android:layout_height="wrap_content" | |
36 | android:text="" |
37 | android:textSize="18dp"> | |
38 | </EditText> |
39 |
| |
40 | </TableLayout> |
四、Refs
【Android】对话框 AlertDialog :http://blog.csdn.net/feng88724/article/details/6171450
Android UI学习 - 对话框 (AlertDialog & ProgressDialog) http://android.blog.51cto.com/268543/333769
Android软件开发之盘点所有Dialog对话框大合集(一):http://blog.csdn.net/xys289187120/article/details/6601613
Android 对话框(Dialog)大全建立你自己的对话框:http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html
转自:http://www.cnblogs.com/skyseraph/archive/2012/02/22/2362989.html
开发者大会最新议题发布,八折抢票! 2013年1月微软MVP申请开始啦! “第一次亲密接触”—有奖征文活动
分类:【Android基础】 2011-02-01 11:00 14116人阅读评论(11)收藏举报
本讲介绍一下Android基本组件:对话框AlertDialog。
API:
java.lang.Object | |
↳ | android.app.AlertDialog.Builder |
使用AlertDialog.Builder创建对话框需要了解以下几个方法:
- setTitle :为对话框设置标题
- setIcon :为对话框设置图标
- setMessage:为对话框设置内容
- setView : 给对话框设置自定义样式
- setItems :设置对话框要显示的一个list,一般用于显示几个命令时。
- setMultiChoiceItems :用来设置对话框显示一系列的复选框。
- setNeutralButton :
- setPositiveButton :给对话框添加"Yes"按钮
- setNegativeButton :对话框添加"No"按钮
- create : 创建对话框
- show :显示对话框
下面我们来看一下最简单对话框。
这个对话框只是简单的显示内容,使用默认图标,没有按钮,不多说,贴代码:
[java] view plaincopyprint?
1. new AlertDialog.Builder(Lesson_01_Pic.this).setTitle("提示标题").setMessage("这是提示内容").show();
(Lesson_02_Dia是类名,请换成自己的!!)
下面我们为这个对话框加个按钮,效果:
代码:
[java] view plaincopyprint?
1. new AlertDialog.Builder(Lesson_01_Pic.this)
2. .setTitle("这是标题")
3. .setMessage("这是提示内容")
4. .setPositiveButton("确定",
5. new DialogInterface.OnClickListener(){
6. public void onClick(DialogInterface dialoginterface, int i){
7. //按钮事件
8. Toast.makeText(Lesson_01_Pic.this, "确定",Toast.LENGTH_LONG).show();
9. }
10. }).show();
添加按钮时,需要同时为该按钮指定监听器。
下面,我们修改一个图标,添加两个按钮,同时显示多个选项,先看下效果:
代码:
[c-sharp] view plaincopyprint?
1. package com.yfz;
2. import android.app.Activity;
3. import android.app.AlertDialog;
4. import android.app.Dialog;
5. import android.content.DialogInterface;
6. import android.content.DialogInterface.OnClickListener;
7. import android.content.DialogInterface.OnMultiChoiceClickListener;
8. import android.os.Bundle;
9. import android.view.View;
10. import android.widget.Button;
11. import android.widget.Toast;
12. public class Lesson_02_Dia extends Activity {
13. /** Called when the activity is first created. */
14. @Override
15. public void onCreate(Bundle savedInstanceState) {
16. super.onCreate(savedInstanceState);
17. setContentView(R.layout.main);
18.
19. Button button = (Button)findViewById(R.id.b01);
20. button.setText("对话框");
21. button.setOnClickListener(new Button.OnClickListener(){
22. @Override
23. public void onClick(View v) {
24. //选项数组
25. String[] choices={"Facebook","Twitter"};
26. //Check判断数组,与选项对应
27. boolean[] chsBool = {true,false};
28. //包含多个选项及复选框的对话框
29. AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this)
30. .setIcon(android.R.drawable.btn_star_big_on)
31. .setTitle("调查")
32. .setMultiChoiceItems(choices, chsBool, multiClick)
33. .setPositiveButton("Yes", onclick)
34. .setNegativeButton("No", onclick).create();
35. dialog.show();
36. }
37.
38. });
39. }
40.
41. /**
42. * 对话框复选框事件监听器
43. */
44. OnMultiChoiceClickListener multiClick = new OnMultiChoiceClickListener(){
45. @Override
46. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
47. Toast.makeText(Lesson_02_Dia.this, "第"+(which+1)+"项,选中结果:"+isChecked,Toast.LENGTH_SHORT).show();
48. }
49.
50. };
51.
52. /**
53. * 对话框按钮点击事件监听器
54. */
55. OnClickListener onclick = new OnClickListener() {
56. @Override
57. public void onClick(DialogInterface dialog, int which) {
58. switch (which) {
59. case Dialog.BUTTON_NEGATIVE:
60. Toast.makeText(Lesson_02_Dia.this, "No..",
61. Toast.LENGTH_LONG).show();
62. break;
63. case Dialog.BUTTON_NEUTRAL:
64. Toast.makeText(Lesson_02_Dia.this, "I don't know.",
65. Toast.LENGTH_LONG).show();
66. break;
67. case Dialog.BUTTON_POSITIVE:
68. Toast.makeText(Lesson_02_Dia.this, "Yes!!",
69. Toast.LENGTH_LONG).show();
70. break;
71. }
72. }
73. };
74. }
说明已经写在注释中了。
下面再介绍一种比较常用的式样,如图:
代码:
[java] view plaincopyprint?
1. @Override
2. public void onCreate(Bundle savedInstanceState) {
3. super.onCreate(savedInstanceState);
4. setContentView(R.layout.main);
5.
6. Button button = (Button)findViewById(R.id.b01);
7. button.setText("对话框");
8. button.setOnClickListener(new Button.OnClickListener(){
9. @Override
10. public void onClick(View v) {
11. //选项数组
12. String[] choices={"新浪微博","校内","街旁"};
13. //包含多个选项的对话框
14. AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this)
15. .setIcon(android.R.drawable.btn_star)
16. .setTitle("分享")
17. .setItems(choices, onselect).create();
18. dialog.show();
19. }
20. });
21. }
22.
23.
24. /**
25. * 选项的事件监听器
26. */
27. OnClickListener onselect = new OnClickListener() {
28. @Override
29. public void onClick(DialogInterface dialog, int which) {
30. // TODO Auto-generated method stub
31. switch (which) {
32. case 0:
33. Toast.makeText(Lesson_02_Dia.this, "您选择了新浪微博.",Toast.LENGTH_SHORT).show();
34. break;
35. case 1:
36. Toast.makeText(Lesson_02_Dia.this, "您选择了校内",Toast.LENGTH_SHORT).show();
37. break;
38. case 2:
39. Toast.makeText(Lesson_02_Dia.this, "您选择了街旁",Toast.LENGTH_SHORT).show();
40. break;
41. }
42. }
43.
44. };
好了,今天就写到这,改天写一下,如果在弹出框中做一个登陆界面。
继续补充...先上图...
页面login.xml: 示例写的比较简单,布局大家可以自己完善、修改。
[xhtml] view plaincopyprint?
1. <?xml version="1.0" encoding="utf-8"?>
2. <TableLayout
3. android:id="@+id/widget36"
4. android:layout_width="fill_parent"
5. android:layout_height="fill_parent"
6. android:orientation="vertical"
7. xmlns:android="http://schemas.android.com/apk/res/android"
8. >
9. <TextView
10. android:id="@+id/widget37"
11. android:layout_width="wrap_content"
12. android:layout_height="wrap_content"
13. android:text="用户名:"
14. >
15. </TextView>
16. <EditText
17. android:id="@+id/widget38"
18. android:layout_width="wrap_content"
19. android:layout_height="wrap_content"
20. android:text=""
21. android:textSize="18sp"
22. >
23. </EditText>
24. <TextView
25. android:id="@+id/widget39"
26. android:layout_width="wrap_content"
27. android:layout_height="wrap_content"
28. android:text="密码:"
29. >
30. </TextView>
31. <EditText
32. android:id="@+id/widget40"
33. android:layout_width="wrap_content"
34. android:layout_height="wrap_content"
35. android:text=""
36. android:textSize="18sp"
37. >
38. </EditText>
39. </TableLayout>
代码 : (也比较简单)
[c-sharp] view plaincopyprint?
1. LayoutInflater factory = LayoutInflater.from(Lesson_02_Dia.this);
2. //获得自定义对话框
3. View view = factory.inflate(R.layout.login, null);
4.
5. AlertDialog dialog02 = new AlertDialog.Builder(Lesson_02_Dia.this)
6. .setIcon(android.R.drawable.btn_star)
7. .setTitle("登录")
8. .setView(view)
9. .setPositiveButton("Yes", onclick)
10. .setNegativeButton("No", onclick).create();
11. dialog02.show();
·8楼 [游客] 2012-08-10 16:48发表[回复][引用][举报][删除]