一、界面效果
运行界面
---------------------------------------------------------------------------------------
部分效果
自定义登录对话框
圆形(转圈)进度条
长形进度条
多选按钮对话框
单选按钮对话框
带多个按钮的提示对话框
带确定取消按钮的提示对话框
---------------------------------------------------------------------------------------------------------
二、知识点
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发表[回复][引用][举报][删除]