AlertDialog
[功能]
也是一种Dialog
[原理]
1. AlertDialog 本身并没有构造函数 即 不可以通过 new AlertDialog(...) 来初始化 而只能通过 AlertDialog.Builder
2. 而 AlertDialog.Builder 比较像是AlertDialog的构造器 用于接收各种和 AlertDialog 有关的参数 然后通过 create() 来创建目标 AlertDialog
[代码 步骤]
1. 定义 AlertDialog.Builder 实例 并接受一些参数 如:图片 标题 正文
Java代码
1 ab = new AlertDialog.Builder(this);
Java代码
2 ab.setTitle("HelloAlert").setMessage("Warning: its Alert Demo!").setIcon(bot);
2. 根据AlertDialog.Builder 创建 相应的 AlertDialog
Java代码
3 aDialog = ab.create();
3. 弹出 AlertDialog
Java代码
4 findViewById(R.id.button).setOnClickListener(new OnClickListener(){
5 public void onClick(View v) {
6 // TODO Auto-generated method stub
7 aDialog.show();
8 }
9 });
4. 取消 AlertDialog
写道
因为该AlertDialog 所采用的布局是系统的 其只接受Text 不接受Button 但是发现可以在Aler
tDialog 上面注册按键监听 即AlertDialog.setOnKeyListener()
不过因为该只负责监听按键事件 而鼠标点击是不管的 所以请点击任意按键关闭之
Java代码
10 aDialog.setOnKeyListener(new OnKeyListener(){
alertdialog使用方法11
12 @Override
13 public boolean onKey(DialogInterface arg0, int arg1, KeyEvent arg2) {
14 // TODO Auto-generated method stub
15 aDialog.dismiss();
16
17 return true;
18 }
19
20 });
* emulator 运行截图:
5. 以上所采用的都是AlertDialog 系统默认的布局 现在说自定义布局的情况 并添加一个用于取消AlertDialog 的 Button
* 定义其布局 hello.main
Xml代码
21 <?xml version="1.0" encoding="utf-8"?>
22 <LinearLayout xmlns:android="schemas.android/apk/res/android"
23 android:orientation="horizontal"
24 android:layout_width="fill_parent"
25 android:layout_height="fill_parent"
26 android:padding="10dp"
27 >
28 <ImageView
29 android:id="@+id/image"
30 android:layout_width="wrap_content"
31 android:layout_height="wrap_content"
32 android:src="@drawable/robot" />
33 <LinearLayout
34 android:orientation="vertical"
35 android:layout_width="wrap_content"
36 android:layout_height="wrap_content"
37 >
38 <TextView
39 android:id="@+id/title"
40 android:layout_width="wrap_content"
41 android:layout_height="wrap_content"
42 android:text="HelloAlert!"
43 />
44 <TextView
45 android:id="@+id/message"
46 android:layout_width="wrap_content"
47 android:layout_height="wrap_content"
48 android:paddingTop="10dip"
49 />
50 </LinearLayout>
51 </LinearLayout>
* 通过LayoutInflater 得到上面 l 布局的 View view
Java代码
52 view = LayoutInflater().inflate(R.layout.hello, null);
* 指定AlertDialog.Builder 所需的布局 并返回目标AlertDialog
Java代码
53 ab.setView(view);
54
55 aDialog = ab.create();
* 通过 view.findViewById() 得到 目标View 然后设置其内容 如:
Java代码
56 TextView title = (TextView) view.findViewById(R.id.title);
57 title.setTextSize(20);
58 title.setTextColor(Color.RED);
59 title.setText("HelloAlert");
60
61 TextView message = (TextView) view.findViewById(ssage);
62 message.setText("Warning: it's Alert Demo!");
* 弹出 AlertDialog
Java代码
63 findViewById(R.id.button).setOnClickListener(new OnClickListener(){
64 public void onClick(View v) {
65 // TODO Auto-generated method stub
66 aDialog.show();
67 }
68 });
* 取消 AlertDialog
写道
在整个View 上注册按键 关闭AlertDialog
Java代码
69 view.setOnClickListener(new OnClickListener(){
70 public void onClick(View v) {
71 // TODO Auto-generated method stub
72 aDialog.dismiss();
73 }
74 });
* emulator 运行截图:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论