- 浏览: 626823 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (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 1867在默认情况下当发生横 ... -
Android EditText 增加自定义过滤
2012-02-19 22:20 2430在Android中,可以通过对EditText设置setFil ... -
解决android textview自动换行问题
2012-02-16 11:46 10791今天忽然发现android项目中的文字排版参差不齐的情况非常严 ... -
通过adb命令获取Android手机的IP地址
2011-12-30 19:11 4403要获取Android手机的IP地址,必须先保证你的Androi ... -
Android 图形用户界面 之 绘图(二) Paint类 主要方法介绍
2011-12-30 09:10 1474/** * Paint类介绍 * * Pa ... -
ListView底部分隔线的问题
2011-12-20 14:42 4333在工作中遇到了一个难题,就是一个listView在最下面的一个 ... -
android获取手机上的图片和视频缩略图thumbnails
2011-11-03 22:05 10079转贴自:http://www.android123.com.c ... -
Activity中使用AIDL让Service与Activity通信
2011-10-25 00:06 2807简易计算器,默认执行1+1的计算,点击go按钮执行计算,先看效 ... -
Android图形报表之AchartEngine(附开发包+API文档)
2011-10-22 16:49 11417统计报表: Java4Less (http://java4le ... -
android中用Spannable在TextView中设置超链接、颜色、字体
2011-10-21 23:08 50571昨晚研读 ApiDemo 源码至 com.example.an ... -
android动态设置TextView字体颜色
2011-10-21 11:50 6483最近写程序就遇到了这么个难题,在TextView 上,正常字体 ... -
layer-list和include的使用
2011-10-20 10:14 2420layer-list,include,merge使用,记录一下 ... -
Android获取屏幕分辨率及DisplayMetrics简介
2011-10-19 08:56 2842Android 可设置为随着窗口大小调整缩放比例,但即便如此, ... -
android资源文件访问android.resource
2011-10-17 09:14 4225android.resource使用转自:http://www ... -
ImageView添加边框
2011-10-16 19:37 2123import android.content.Context; ... -
Android 实现TextView中文字链接的方式
2011-10-16 14:08 2532Android 的实现TextView中文字链接的方式有很多种 ... -
android实现TextView多行文本滚动
2011-10-16 13:38 6451Android中我们为了实现文本的滚动可以在ScrollVie ... -
ListView之setEmptyView的问题
2011-10-15 23:19 4984使用listView或者gridView时,当列表为空时,有时 ... -
去掉TabActivity底部默认白线
2011-10-15 16:38 3312经过一翻百度,google终于实现了TabActivity设置 ... -
Android SDK 源码下载,eclipse关联代码
2011-10-14 10:52 2631下面地址可以下载到SDK的源代码,非官方的: 1.5——ht ...
相关推荐
在设计自定义AlertDialog时,应考虑到不同屏幕尺寸和方向的影响,确保布局在各种设备上都能正常显示。可以使用约束布局(ConstraintLayout)或相对布局(RelativeLayout)等来实现响应式设计。 总之,自定义Android...
默认的`AlertDialog`样式有时无法满足开发者对于界面定制的需求,因此我们常常需要自定义其布局来实现更丰富的功能和更美观的界面。下面将详细讲解如何自定义`AlertDialog`的布局。 首先,自定义`AlertDialog`布局...
你可以根据自己的需求添加各种组件,并使用Android的属性来设置它们的颜色、大小和位置。 ```xml android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical...
在Android开发中,自定义Dialog是一种常见的需求,它允许开发者根据应用的设计风格和功能需求创建独特的对话框。本文将深入探讨如何使用Android源码来实现一个名为HerilyAlertDialog的完全自定义Dialog。这个例子...
`PopupWindow`是另一种轻量级的弹出组件,它可以显示在屏幕任意位置,并且可以自定义大小和形状。有时我们需要在`AlertDialog`中使用`PopupWindow`来实现更复杂的交互,例如下拉菜单或滑动选择器。以下是一个简单的...
这样,无论设备的屏幕大小如何,对话框都能保持良好的显示效果。 8. **考虑兼容性** 在实现过程中,要考虑到不同Android版本的兼容性问题。使用支持库(如AppCompat库)可以帮助确保在旧版本Android上的正常运行。...
默认的Android AlertDialog样式可能与iOS的设计有所不同,因此,为了让Android应用看起来更接近iOS,开发者有时会自定义AlertDialog的样式。以下是一些关键的知识点: 1. **自定义布局**: 要实现类似iPhone的...
本项目“android自定义dialog+listview自适应屏幕显示”主要关注这两个方面的实现,确保界面在不同屏幕尺寸和分辨率下都能良好展示。下面我们将深入探讨相关知识点。 首先,我们来讨论自定义Dialog。在Android原生...
首先,我们来看一下如何使用代码创建一个带自定义样式的`AlertDialog`。关键在于使用`AlertDialog.Builder`的构造函数,传入一个`ContextThemeWrapper`对象,并指定自定义的主题资源ID。这样,`AlertDialog`就会使用...
默认的Android AlertDialog样式与iOS的样式有明显的不同,例如按钮布局、圆角和整体设计。要实现类似iOS的风格,我们需要自定义AlertDialog的布局和样式。 1. **自定义布局**: - 创建一个新的XML布局文件,用于...
这可能需要适配横屏模式,或者根据屏幕大小动态调整对话框的大小和布局。 7. **测试与优化**:最后,进行充分的测试,确保在各种设备和Android版本上都能正常工作。优化性能,避免内存泄漏和不必要的资源消耗。 这...
3. **设置样式**:为了进一步模仿iOS的外观,你可能需要自定义AlertDialog的主题。在AndroidManifest.xml中,或者在Activity的onCreate()方法中,你可以设置`android:theme`属性来应用一个自定义主题。在styles.xml...
通过修改主题或者使用自定义布局文件,开发者可以自定义`AlertDialog`的颜色、字体大小、背景等视觉效果。在`AndroidManifest.xml`中声明主题或者在创建`Builder`时传入自定义主题即可。 7. **`AlertDialog`与`...
通常,Dialog会按照系统默认的样式和位置显示,但有时为了满足特定的UI设计需求,我们可能需要自定义Dialog的大小和位置。本篇文章将深入探讨如何创建一个可自定义大小和位置的Dialog,基于提供的标题"android 可...
自定义视图使你可以完全控制窗口的布局和设计,而PopupWindow则提供了更大的灵活性,可以根据需要调整其大小、位置和显示效果。在实际项目中,结合这两者,可以创造出各种独特的交互体验,提升应用的用户满意度。
8. **主题和样式**: 自定义弹出窗口的外观可以通过定义主题和样式来实现。在`res/values/styles.xml`文件中可以创建新的主题,然后在`DialogFragment`或`AlertDialog.Builder`中应用。 9. **事件响应**: 弹出窗口中...
可能需要对布局进行响应式设计,以适应不同的屏幕大小。 7. **测试和调试**:在真实设备或模拟器上进行测试,确保对话框的行为和视觉效果与预期一致。对于可能出现的问题,如按钮点击事件不正确或布局显示异常,...
PopupWindow则更加灵活,它可以在屏幕的任何位置显示,并且可以自定义大小和显示效果。 自定义单选对话框通常涉及到RadioGroup和RadioButton组件。RadioGroup是一个包含多个RadioButton的容器,用于实现单选功能。...
在Android开发中,自定义对话框(Dialog)是提升用户体验的重要手段之一,它允许开发者根据应用的风格和需求创建独特且吸引人的交互界面。本文将深入探讨如何在Android中实现自定义对话框,并进行界面美化。 首先,...
首先,我们要明白,Android系统默认的Dialog是按照预设样式和位置显示的,但通过自定义DialogFragment或直接自定义布局,我们可以改变其外观和位置。以下是一些关键步骤: 1. **创建自定义DialogFragment** 首先,...