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小时内删除。