- 浏览: 618296 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (164)
- android(基础) (81)
- android(进阶) (2)
- android(底层) (7)
- android(面试) (0)
- android(多媒体) (1)
- android(组件学习) (4)
- android(网络相关) (0)
- android(动画) (1)
- android(数据库) (2)
- android(UI样式) (3)
- android(xml) (0)
- android(调试) (14)
- android(环境搭建) (7)
- android(api) (1)
- C++ (1)
- C (0)
- JavaSE (2)
- Objective-c (1)
- JavaScript (0)
- 设计模式 (0)
- eclipse (3)
- javaee (4)
- 其它 (5)
- linux (18)
- Oracle (1)
- mysql (1)
- 嵌入式linux (1)
- 版本控制工具 (3)
- web前端 (1)
- python (1)
最新评论
-
chungehenyy:
android颜色对应的xml配置值,颜色表 -
u011467537:
...
android中用Spannable在TextView中设置超链接、颜色、字体 -
SurpriseLee:
不能更赞了!
android颜色对应的xml配置值,颜色表 -
u012094586:
这个代码是不是不全呀,能不能提供完整版的给予参考呢?xiexi ...
Android VideoView如何播放RTSP的流 -
luechenying:
顶上天!!!!!!!!!!!!!!!!!!
android颜色对应的xml配置值,颜色表
先介绍一些关于AlertDialog的基本知识:
一、AlertDialog简介:AlertDialog的构造方法被声明为protected,所以不能直接使用new关键字来创建AlertDialog类的对象实例。要想创建AlertDialog对话框,需要使用Builder类,该类是AlertDialog类中定义的一个内嵌类。因此必须创建AlertDialog.Builder类的对象实例,然后再调用show()来显示对话框。
二、使用AlertDialog创建对话框的种类:
1. 最多带3个按钮的对话框:setPositiveButton(...)--确认、setNegativeButton(...)--取消、setNeutralButton(...)--忽略
2.简单列表对话框:通过AlertDialog.Builder类的setItems(...)方法可以创建简单的列表对话框。其实,这种类型的对话框相当于将ListView组件放在对话框上,然后再在ListView中添加若干简单的文本。
3.单选列表对话框:通过AlertDialog.Builder类的setSingleChoiceItems(...)来创建。目前支持4种数据源(数组资源、数据集、字符串数组、ListAdapter)
4.多选列表对话框:通过AlertDialog.Builder类的setMultiChoiceItems(...)创建。目前支持3种数据源(数组资源、数据集、字符串数组)
5.水平进度或圆形对话框(默认是:圆形):该类型的对话框是通过ProgressDialog来实现,该类是AlertDialog的子类,它不需要用create()方法来返回实例对象,只需要new即可。
ProgressDialog.STYLE_HORIZONTAL //水平进度样式
ProgressDialog.STYLE_SPINNER //圆形样式
6.自定义对话框:直接使用XML布局文件或以编写JAVA代码方式来创建视图,并将这些视图对象添加到对话框中去。
7.使用Activity托管对话框:Activity类中也提供了创建对话框的方式,有个onCreateDialog(int id)的方法,其返回类型是Dialog,通过是当调用Activity类的showDialog(int id)方法时,系统会调用该方法来返回一个Dialog对象。showDialog和onCreateDialog都有一个int类型的id参数,该参数值将传递给onCreateDialog方法。因此,我们可以利用不同的id创建多个对话框。
***注意***:对于表示某一个对话框的ID,系统只在第1次调用showDialog方法时调用onCreateDialog方法。在第1次创建Dialog对象时系统会将该对象保存在Activity的缓存里,相当于一个Map对象,对话框的ID作为Map的Key,而Dialog对象作为Map的Value。下次再调用时,会先根据这个ID从Map中获得第1次创建的Dialog对象。除非该ID已经被删除。
8.悬浮对话框和触摸任何位置都可以关闭的对话框:
1).悬浮对话框:android:theme="@android:style/Theme.Dialog";对于该类型的对话框,触摸屏幕任何位置都会触发Activity的OnTouchEvent事件。
2).触摸任何位置都可以关闭的对话框:首先必须要继承AlertDialog类,并重写OnTouchEvent事件。
第一种:
第二种:
第三种:
/**
* 自定义AlertDialog
*
* @author chenjianli 2011-05-10
*/
如果我们setView(),中的View是带EditText的,此时,我们必须在show()之前加上这么一句话,才可以在点击EditText时弹出键盘,否则将很杯具!键盘是弹不出来的。
这里还有一个地方需要注意一下,如果我们在show这个AlertDialog之前,需要设置该AlertDialog显示的View中的EditText的内容,则我们应该这么去findViewById():
否则会报ERROR/AndroidRuntime(1032): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.错误!!
一、AlertDialog简介:AlertDialog的构造方法被声明为protected,所以不能直接使用new关键字来创建AlertDialog类的对象实例。要想创建AlertDialog对话框,需要使用Builder类,该类是AlertDialog类中定义的一个内嵌类。因此必须创建AlertDialog.Builder类的对象实例,然后再调用show()来显示对话框。
二、使用AlertDialog创建对话框的种类:
1. 最多带3个按钮的对话框:setPositiveButton(...)--确认、setNegativeButton(...)--取消、setNeutralButton(...)--忽略
2.简单列表对话框:通过AlertDialog.Builder类的setItems(...)方法可以创建简单的列表对话框。其实,这种类型的对话框相当于将ListView组件放在对话框上,然后再在ListView中添加若干简单的文本。
3.单选列表对话框:通过AlertDialog.Builder类的setSingleChoiceItems(...)来创建。目前支持4种数据源(数组资源、数据集、字符串数组、ListAdapter)
4.多选列表对话框:通过AlertDialog.Builder类的setMultiChoiceItems(...)创建。目前支持3种数据源(数组资源、数据集、字符串数组)
5.水平进度或圆形对话框(默认是:圆形):该类型的对话框是通过ProgressDialog来实现,该类是AlertDialog的子类,它不需要用create()方法来返回实例对象,只需要new即可。
ProgressDialog.STYLE_HORIZONTAL //水平进度样式
ProgressDialog.STYLE_SPINNER //圆形样式
6.自定义对话框:直接使用XML布局文件或以编写JAVA代码方式来创建视图,并将这些视图对象添加到对话框中去。
7.使用Activity托管对话框:Activity类中也提供了创建对话框的方式,有个onCreateDialog(int id)的方法,其返回类型是Dialog,通过是当调用Activity类的showDialog(int id)方法时,系统会调用该方法来返回一个Dialog对象。showDialog和onCreateDialog都有一个int类型的id参数,该参数值将传递给onCreateDialog方法。因此,我们可以利用不同的id创建多个对话框。
***注意***:对于表示某一个对话框的ID,系统只在第1次调用showDialog方法时调用onCreateDialog方法。在第1次创建Dialog对象时系统会将该对象保存在Activity的缓存里,相当于一个Map对象,对话框的ID作为Map的Key,而Dialog对象作为Map的Value。下次再调用时,会先根据这个ID从Map中获得第1次创建的Dialog对象。除非该ID已经被删除。
8.悬浮对话框和触摸任何位置都可以关闭的对话框:
1).悬浮对话框:android:theme="@android:style/Theme.Dialog";对于该类型的对话框,触摸屏幕任何位置都会触发Activity的OnTouchEvent事件。
2).触摸任何位置都可以关闭的对话框:首先必须要继承AlertDialog类,并重写OnTouchEvent事件。
第一种:
/** * 自定义AlertDialog * * @author chenjianli 2011-05-10 */ public void alert(){ WindowManager manager = getWindowManager(); Display display = manager.getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); LayoutInflater inflater = getLayoutInflater(); View view = inflater.inflate(R.layout.alert, null); TextView text = (TextView)view.findViewById(R.id.text); text.setText("自定义AlertDialog"); AlertDialog alert = new AlertDialog.Builder(this).create(); alert.show(); alert.getWindow().setLayout(width/2, height/4); alert.setTitle("测试"); alert.getWindow().setContentView(R.layout.alert); }
第二种:
/** * 自定义AlertDialog * * @author chenjianli 2011-05-10 */ AlertDialog zidongbofangDialog = new AlertDialog.Builder(ManHuaActivity.this).create(); zidongbofangDialog.show(); zidongbofangDialog.getWindow().setGravity(Gravity.CENTER); zidongbofangDialog.getWindow().setLayout( android.view.WindowManager.LayoutParams.FILL_PARENT, android.view.WindowManager.LayoutParams.WRAP_CONTENT); zidongbofangDialog.getWindow().setContentView(R.layout.manhua_dialog_zidongbofang);
第三种:
/**
* 自定义AlertDialog
*
* @author chenjianli 2011-05-10
*/
如果我们setView(),中的View是带EditText的,此时,我们必须在show()之前加上这么一句话,才可以在点击EditText时弹出键盘,否则将很杯具!键盘是弹不出来的。
AlertDialog tiaozhuanDialog= new AlertDialog.Builder(ManHuaActivity.this).create(); tiaozhuanDialog.setView(getLayoutInflater().inflate(R.layout.manhua_dialog_tiaozhuan, null)); tiaozhuanDialog.show(); tiaozhuanDialog.getWindow().setGravity(Gravity.CENTER); tiaozhuanDialog.getWindow().setLayout( android.view.WindowManager.LayoutParams.FILL_PARENT, android.view.WindowManager.LayoutParams.WRAP_CONTENT); tiaozhuanDialog.getWindow().setContentView(getLayoutInflater().inflate(R.layout.manhua_dialog_tiaozhuan, null));
这里还有一个地方需要注意一下,如果我们在show这个AlertDialog之前,需要设置该AlertDialog显示的View中的EditText的内容,则我们应该这么去findViewById():
EditText editText = (EditText)tiaozhuanDialog.findViewById(R.id.myEditText); editText.setText("Who are you ? I am android Developer ");
否则会报ERROR/AndroidRuntime(1032): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.错误!!
发表评论
-
Fragment 横竖屏切换问题
2013-04-24 14:41 1789在默认情况下当发生横 ... -
Android EditText 增加自定义过滤
2012-02-19 22:20 2391在Android中,可以通过对EditText设置setFil ... -
解决android textview自动换行问题
2012-02-16 11:46 10599今天忽然发现android项目中的文字排版参差不齐的情况非常严 ... -
通过adb命令获取Android手机的IP地址
2011-12-30 19:11 4332要获取Android手机的IP地址,必须先保证你的Androi ... -
Android 图形用户界面 之 绘图(二) Paint类 主要方法介绍
2011-12-30 09:10 1424/** * Paint类介绍 * * Pa ... -
ListView底部分隔线的问题
2011-12-20 14:42 4290在工作中遇到了一个难题,就是一个listView在最下面的一个 ... -
android获取手机上的图片和视频缩略图thumbnails
2011-11-03 22:05 10010转贴自:http://www.android123.com.c ... -
Activity中使用AIDL让Service与Activity通信
2011-10-25 00:06 2759简易计算器,默认执行1+1的计算,点击go按钮执行计算,先看效 ... -
Android图形报表之AchartEngine(附开发包+API文档)
2011-10-22 16:49 11328统计报表: Java4Less (http://java4le ... -
android中用Spannable在TextView中设置超链接、颜色、字体
2011-10-21 23:08 50415昨晚研读 ApiDemo 源码至 com.example.an ... -
android动态设置TextView字体颜色
2011-10-21 11:50 6422最近写程序就遇到了这么个难题,在TextView 上,正常字体 ... -
layer-list和include的使用
2011-10-20 10:14 2387layer-list,include,merge使用,记录一下 ... -
Android获取屏幕分辨率及DisplayMetrics简介
2011-10-19 08:56 2796Android 可设置为随着窗口大小调整缩放比例,但即便如此, ... -
android资源文件访问android.resource
2011-10-17 09:14 4146android.resource使用转自:http://www ... -
ImageView添加边框
2011-10-16 19:37 2071import android.content.Context; ... -
Android 实现TextView中文字链接的方式
2011-10-16 14:08 2476Android 的实现TextView中文字链接的方式有很多种 ... -
android实现TextView多行文本滚动
2011-10-16 13:38 6365Android中我们为了实现文本的滚动可以在ScrollVie ... -
ListView之setEmptyView的问题
2011-10-15 23:19 4952使用listView或者gridView时,当列表为空时,有时 ... -
去掉TabActivity底部默认白线
2011-10-15 16:38 3255经过一翻百度,google终于实现了TabActivity设置 ... -
Android SDK 源码下载,eclipse关联代码
2011-10-14 10:52 2583下面地址可以下载到SDK的源代码,非官方的: 1.5——ht ...
相关推荐
3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity...
3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity...
3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity...
3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity...
3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——...
3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个...
3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity...
3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity...
3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity...
3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity...