浏览 8504 次
锁定老帖子 主题:AlertDialog 使用 扩展
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-02-22
最后修改:2010-02-22
AlertDialog
[功能] 也是一种Dialog
[原理] 1. AlertDialog 本身并没有构造函数 即 不可以通过 new AlertDialog(...) 来初始化 而只能通过 AlertDialog.Builder 2. 而 AlertDialog.Builder 比较像是AlertDialog的构造器 用于接收各种和 AlertDialog 有关的参数 然后通过 create() 来创建目标 AlertDialog
[代码 步骤] 1. 定义 AlertDialog.Builder 实例 并接受一些参数 如:图片 标题 正文 ab = new AlertDialog.Builder(this);
ab.setTitle("HelloAlert").setMessage("Warning: its Alert Demo!").setIcon(R.drawable.robot);
2. 根据AlertDialog.Builder 创建 相应的 AlertDialog aDialog = ab.create();
3. 弹出 AlertDialog findViewById(R.id.button).setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub aDialog.show(); } });
4. 取消 AlertDialog 写道
因为该AlertDialog 所采用的布局是系统的 其只接受Text 不接受Button 但是发现可以在AlertDialog 上面注册按键监听 即AlertDialog.setOnKeyListener()
不过因为该监听器只负责监听按键事件 而鼠标点击是不管的 所以请点击任意按键关闭之
aDialog.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(DialogInterface arg0, int arg1, KeyEvent arg2) { // TODO Auto-generated method stub aDialog.dismiss(); return true; } });
* emulator 运行截图:
5. 以上所采用的都是AlertDialog 系统默认的布局 现在说自定义布局的情况 并添加一个用于取消AlertDialog 的 Button
* 定义其布局 hello.main <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/robot" /> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="HelloAlert!" /> <TextView android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="10dip" /> </LinearLayout> </LinearLayout>
* 通过LayoutInflater 得到上面 hello.xml 布局的 View view view = this.getLayoutInflater().inflate(R.layout.hello, null);
* 指定AlertDialog.Builder 所需的布局 并返回目标AlertDialog ab.setView(view); aDialog = ab.create();
* 通过 view.findViewById() 得到 目标View 然后设置其内容 如: TextView title = (TextView) view.findViewById(R.id.title); title.setTextSize(20); title.setTextColor(Color.RED); title.setText("HelloAlert"); TextView message = (TextView) view.findViewById(R.id.message); message.setText("Warning: it's Alert Demo!");
* 弹出 AlertDialog findViewById(R.id.button).setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub aDialog.show(); } });
* 取消 AlertDialog 写道
在整个View 上注册按键监听器 关闭AlertDialog
view.setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub aDialog.dismiss(); } });
* emulator 运行截图:
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-03-01
有使用,扩展木发现
|
|
返回顶楼 | |
发表时间:2010-10-13
刚刚入门android,有很多不懂的地方,看了你写的文章,明了了很多。期待楼主更精彩的帖子。。。
|
|
返回顶楼 | |
发表时间:2010-10-21
学习了。昨天还在找呢!
|
|
返回顶楼 | |