- 浏览: 403377 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ysn003:
这样用就好啦!!!<Button ...
Android学习 之 ColorStateList按钮文字变色 -
ysn003:
Android学习 之 ColorStateList按钮文字变色 -
vitoliao:
楼主你好,如果你的代码需要实现的是回显功能,需要在MainCl ...
Java学习 之 Socket(实现简易的C/S聊天室) -
xinqiqi123:
在item布局中要是引用到自定的东西,item就会显示不全
Android学习 之 问题&解答 ScrollView中嵌套ListView时显示不全的简便解决方案 -
CTXsamCTX:
很好,学习了。
Android 图形用户界面 之 绘图(一)
先介绍一些关于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
*/
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.错误!!
评论
2 楼
ldci3gandroid
2011-11-29
myxuee 写道
你好,第三种情况中,如何才能显示软键盘啊?
看不大明白…多谢了。
看不大明白…多谢了。
你就按我上面的代码写就行了
1 楼
myxuee
2011-11-17
你好,第三种情况中,如何才能显示软键盘啊?
看不大明白…多谢了。
看不大明白…多谢了。
发表评论
-
Android 学习 之 使用ActivityGroup调用对应Activity的菜单
2011-12-23 17:34 2598代码很简单,直接贴在这里了。 在使用ActivityGrou ... -
Android 学习 之 TextView结合SpannableString
2011-12-22 12:02 5427protected void onCreate(Bundle ... -
Android 学习 之 图形绘制篇 获取要绘制的文字的宽度/长度
2011-11-29 15:43 7381转自:http://www.cnblogs.com/Tiger ... -
Android 学习 之 键盘问题
2011-10-12 12:00 45111.隐藏键盘 一般情况下,都是在点击某个View的时候 ... -
Android 学习 之 SD卡相关
2011-08-19 15:42 13001.获取SD的路径字符串 public static Str ... -
Android 学习 之 关于应用程序的自适应问题(一)
2011-08-16 12:18 1609转自:http://venus-chen.iteye.com/ ... -
Android 学习 之 资源文件 布局中ID的引用
2011-08-16 11:30 5978转自:http://tiantian0521.blog.163 ... -
Android 学习 之 关闭应用程序的方法
2011-08-10 11:46 1402package com.close; import jav ... -
Android 学习 之 资源文件 动态修改strings.xml中的字符资源
2011-08-10 11:25 6491转自:http://www.cnblogs.com/cools ... -
Android 学习 之 Intent 调用大全
2011-08-10 11:21 1021从别人那里抠的,代码有点乱,仅供自己参考,需要的自己整理下吧, ... -
Android学习 之 动态切换全屏和非全屏模式
2011-06-02 10:03 4403直接贴出代码: package com.screen; ... -
Android学习 之 常见知识点记录
2011-06-01 20:35 1850也是转的,呜呜,人家写的好好,有记录的习惯,值得学习,转载请说 ... -
Android学习 之 获取可视区域的Rect对象(顺带获取状态栏和标题栏高度的方法)
2011-06-01 11:31 10864这个有什么用捏,这 ... -
Android 基本控件 之 Dialog(二)Dialog主题的Activity
2011-06-01 10:10 2687转自:http://www.cnblogs.com/xi ... -
Android 基本控件 之 SeekBar(一) 个性你的视图
2011-05-31 16:34 12138系统自带的SeekBar组件 ... -
Android 系统设置 之 保持手机屏幕常亮的方法
2011-05-25 18:13 9781方法一: 在Activity的onCreate()中: ... -
Android 图形用户界面 之 绘图(二) Paint类 主要方法介绍
2011-05-25 18:09 9255摘自《Ophone应用开发权威指南》: /** * P ... -
Android 图形用户界面 之 绘图(一)
2011-05-25 17:59 30668直接贴上代码: BasicViewDraw.java ... -
【转】Android 画图 之 Matrix(三)
2011-05-24 19:04 1642原文地址:http://developer.51cto.com ... -
【转】Android 画图 之 Matrix(二)
2011-05-24 18:51 1397原文地址:http://chroya.iteye.com/ ...
相关推荐
在设计自定义AlertDialog时,应考虑到不同屏幕尺寸和方向的影响,确保布局在各种设备上都能正常显示。可以使用约束布局(ConstraintLayout)或相对布局(RelativeLayout)等来实现响应式设计。 总之,自定义Android...
默认的`AlertDialog`样式有时无法满足开发者对于界面定制的需求,因此我们常常需要自定义其布局来实现更丰富的功能和更美观的界面。下面将详细讲解如何自定义`AlertDialog`的布局。 首先,自定义`AlertDialog`布局...
在Android开发中,自定义对话框(AlertDialog)是常见的需求,它可以提供更加个性化的...在实际项目中,你可能还需要考虑对话框的动画效果、触摸反馈以及不同屏幕尺寸的适配等问题,确保对话框在各种设备上都能正常工作。
在Android开发中,自定义Dialog是一种常见的需求,它允许开发者根据应用的设计风格和功能需求创建独特的对话框。本文将深入探讨如何使用Android源码来实现一个名为HerilyAlertDialog的完全自定义Dialog。这个例子...
`PopupWindow`是另一种轻量级的弹出组件,它可以显示在屏幕任意位置,并且可以自定义大小和形状。有时我们需要在`AlertDialog`中使用`PopupWindow`来实现更复杂的交互,例如下拉菜单或滑动选择器。以下是一个简单的...
这样,无论设备的屏幕大小如何,对话框都能保持良好的显示效果。 8. **考虑兼容性** 在实现过程中,要考虑到不同Android版本的兼容性问题。使用支持库(如AppCompat库)可以帮助确保在旧版本Android上的正常运行。...
本项目“android自定义dialog+listview自适应屏幕显示”主要关注这两个方面的实现,确保界面在不同屏幕尺寸和分辨率下都能良好展示。下面我们将深入探讨相关知识点。 首先,我们来讨论自定义Dialog。在Android原生...
默认的Android AlertDialog样式可能与iOS的设计有所不同,因此,为了让Android应用看起来更接近iOS,开发者有时会自定义AlertDialog的样式。以下是一些关键的知识点: 1. **自定义布局**: 要实现类似iPhone的...
在Android开发中,`AlertDialog`是系统提供的一种用于显示警告、确认或信息的对话框。默认情况下,`AlertDialog`的...记住,自定义样式时要考虑到不同设备和屏幕尺寸的适配,确保对话框在各种环境下都能有良好的表现。
这可能需要适配横屏模式,或者根据屏幕大小动态调整对话框的大小和布局。 7. **测试与优化**:最后,进行充分的测试,确保在各种设备和Android版本上都能正常工作。优化性能,避免内存泄漏和不必要的资源消耗。 这...
默认的Android AlertDialog样式与iOS的样式有明显的不同,例如按钮布局、圆角和整体设计。要实现类似iOS的风格,我们需要自定义AlertDialog的布局和样式。 1. **自定义布局**: - 创建一个新的XML布局文件,用于...
通过分析和实践这个`alertDialog.zip`中的源码,开发者不仅可以掌握`AlertDialog`的基本用法,还能深入理解Android应用中如何优雅地处理用户交互。同时,结合其他标签如“毕业设计”和“代码学习”,这个源码可以...
3. **设置样式**:为了进一步模仿iOS的外观,你可能需要自定义AlertDialog的主题。在AndroidManifest.xml中,或者在Activity的onCreate()方法中,你可以设置`android:theme`属性来应用一个自定义主题。在styles.xml...
通常,Dialog会按照系统默认的样式和位置显示,但有时为了满足特定的UI设计需求,我们可能需要自定义Dialog的大小和位置。本篇文章将深入探讨如何创建一个可自定义大小和位置的Dialog,基于提供的标题"android 可...
自定义视图使你可以完全控制窗口的布局和设计,而PopupWindow则提供了更大的灵活性,可以根据需要调整其大小、位置和显示效果。在实际项目中,结合这两者,可以创造出各种独特的交互体验,提升应用的用户满意度。
8. **主题和样式**: 自定义弹出窗口的外观可以通过定义主题和样式来实现。在`res/values/styles.xml`文件中可以创建新的主题,然后在`DialogFragment`或`AlertDialog.Builder`中应用。 9. **事件响应**: 弹出窗口中...
可能需要对布局进行响应式设计,以适应不同的屏幕大小。 7. **测试和调试**:在真实设备或模拟器上进行测试,确保对话框的行为和视觉效果与预期一致。对于可能出现的问题,如按钮点击事件不正确或布局显示异常,...
Android SDK提供了多种预定义的Dialog样式,如AlertDialog、ProgressDialog等,但它们可能无法满足所有设计需求,因此我们需要自定义。 自定义弹出框的核心在于创建一个继承自Dialog或者DialogFragment的类。在这个...
PopupWindow则更加灵活,它可以在屏幕的任何位置显示,并且可以自定义大小和显示效果。 自定义单选对话框通常涉及到RadioGroup和RadioButton组件。RadioGroup是一个包含多个RadioButton的容器,用于实现单选功能。...
此外,为了方便使用,这个库可能还提供了简单的API接口,让开发者可以通过几行代码就能轻松创建和展示自定义对话框。例如,设置对话框内容、标题、按钮回调函数等。 总之,"仿新浪的漂亮的自定义对话框"是一个为...