常用控件

9、Dialog
  我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择。这些功能我们叫它Android Dialog对话框

对话框,要创建对话框之前首先要创建Builder类创建者,Builder是AlertDialog的子类,而且还是它的内部类。

setPositiveButton --设置最左边的按钮
setNeutralButton --设置中间的按钮
setNegativeButton --设置最右边的按钮

         builder = new Builder(MainActivity.this);
builder.setIcon(android.R.drawable.ic_dialog_info);
builder.setTitle("dialg标题");
//builder.setMessage("dialog对话框内容"); builder.setPositiveButton("Yes", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub }
}); // builder.setNeutralButton("back", new OnClickListener() {
//
// @Override
// public void onClick(DialogInterface dialog, int which) {
// // TODO Auto-generated method stub
//
// }
// }); builder.setNegativeButton("No", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub }
}); builder.setView(new CheckBox(this)); builder.show();

由于 Builder 设计模式特性,上面代码也可以这样简写

 //        new Builder(this)
// .setIcon(android.R.drawable.ic_dialog_info)
// .setTitle("dialg标题")
// .setMessage("dialog对话框内容")
// .setPositiveButton("yes", new OnClickListener() {
//
// @Override
// public void onClick(DialogInterface dialog, int which) {
// // TODO Auto-generated method stub
//
// }
// })
// .setNegativeButton("no", new OnClickListener() {
//
// @Override
// public void onClick(DialogInterface dialog, int which) {
// // TODO Auto-generated method stub
//
// }
// })
// .setView(new CheckBox(this))
// .create()
// .show();

builder.setView(new CheckBox(this));只能添加一个组件

如果添加多个组件,会被后面的覆盖掉

添加某些一组组件,还有对应函数

添加单选框

 //        builder.setSingleChoiceItems(new String[] {"单选","单选"}, 1, new OnClickListener() {
//
// @Override
// public void onClick(DialogInterface dialog, int which) {
// // TODO Auto-generated method stub
//
// }
// });

添加复习框

 //        builder.setMultiChoiceItems(new String[] {"多选","多选"}, new boolean[] {false,true}, new OnMultiChoiceClickListener() {
//
// @Override
// public void onClick(DialogInterface arg0, int arg1, boolean arg2) {
// // TODO Auto-generated method stub
//
// }
// });

添加列表

 //        builder.setItems(new String[] {"item1","item2","item3"}, new OnClickListener() {
//
// @Override
// public void onClick(DialogInterface arg0, int arg1) {
// // TODO Auto-generated method stub
//
// }
// });

此外,还可以自定义布局文件,当作一个组件用setView()添加

         LayoutInflater inflater = getLayoutInflater();
View layoutView = inflater.inflate(R.layout.dialogmain, (ViewGroup)findViewById(R.id.myLayout)); builder.setView(layoutView);
 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:background="#ffffffff" android:orientation="horizontal"
android:id="@+id/myLayout">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="TextView" />
<EditText
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="btn1"
/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text=" btn2"
/>
</LinearLayout>

Android API 支持下列类型的对话框对象:
  警告对话框 AlertDialog:  一个可以有0到3个按钮, 一个单选框或复选框的列表的对话框. 警告对话框可以创建大多数的交互界面, 是推荐的类型.
  进度对话框 ProgressDialog:  显示一个进度环或者一个进度条. 由于它是AlertDialog的扩展, 所以它也支持按钮.
  日期选择对话框 DatePickerDialog:  让用户选择一个日期.
  时间选择对话框 TimePickerDialog:  让用户选择一个时间.
  如果你希望自定义你的对话框, 可以扩展Dialog类

更详细的可以查看这里:

android学习日记27--Dialog使用及其设计模式

10、常用控件总结

  Android控件种类繁多,但常用的无非这几种,当然有些高级控件可能特殊点,至此,常用控件就讲这些。如果开发时遇到陌生控件再去查API文档。

附件是转载的控件常用属性讲解,不求记忆,但得知道有这么些属性。

android:orientation
horizontal/vertical
设置布局水平还是垂直,默认是垂直

android:checked
true/false
标记默认选中,如果是单选则选中最后一个

android:layout_gravity
center/right/left/bottom/top
位置

android:gravity
center/right/left/bottom/top
位置(android:gravity属性是对该view内容的限定.比如一个button上面的text.你可以设置该text在view的靠左,靠右等位置.该属性就干了这个.android:layout_gravity是用来设置该view相对与起父view的位置.比如一个button在linearlayout里,你想把该button放在靠左靠右等位置就可以通过该属性设置.)

android:hint
@string
提示信息,当文本框为空的时候显示

android:numeric
integer/decimal
只能输入整数/小数

android:singleLine
true/false
设置单行输入,一旦设置为true,则文字不会自动换行

android:password
true/false
设置密码框

android:textColor
#ffffff
字体颜色

android:textStyle
bold/italic/bolditalic
设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开

android:textSize
20dip
字体大小

android:capitalize
characters
设置英文字母大写类型。此处无效果,需要弹出输入法才能看得到

android:textAlign
center/right/left
设置文字显示位置,EditText没有这个属性,但TextView有

android:autoText
true/false
如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。

android:editable
true/false
是否可编辑

android:textColorHighlight
#ffffff
被选中文字的底色

android:textColorHint
#ffffff
设置提示信息文字的颜色,默认为灰色

android:textScaleX
1.5
控制字与字之间的间距

android:typeface
normal/sans/serif/monospace
设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3

android:background
@null
空间背景,这里没有,指透明,将EditText自定义的背景去掉

android:layout_weight
1
权重,控制控件之间的地位,在控制控件显示的大小时蛮有用的。

android:textAppearance
textAppearanceButton、textAppearanceInverse、textAppearanceLarge、textAppearanceLargeInverse、textAppearanceMedium、textAppearanceMediumInverse、textAppearanceSmall、textAppearanceSmallInverse
设置文字外观。如“?android:attr/textAppearanceLargeInverse”这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。

android:autoLink
none、web、email、phone、map、all
设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。

android:cursorVisible
true/false
设定光标为显示/隐藏,默认显示。

android:digits
1234567890.+-*/%\n()
设置允许输入哪些字符。

android:drawableBottom
在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。
android:drawableLeft

在text的左边输出一个drawable,如图片。
android:drawableRight
在text的右边输出一个drawable,如图片。

android:drawableTop
在text的正上方输出一个drawable,如图片。
android:drawablePadding

设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。
android:editorExtras
指定特定输入法的扩展,如“com.mydomain.im.SOME_FIELD”。源码跟踪至EditorInfo.extras,暂无相关实现代码。

android:ellipsize
start、end、middle、marquee
设置当文字过长时,该控件该如何显示。有如下值设置:”start”省略号显示在开头;”end”省略号显示在结尾;”middle”省略号显示在中间;”marquee”以跑马灯的方式显示(动画横向移动)

android:freezesText
true/false
设置保存文本的内容以及光标的位置,再到相应的Activity中加上如下两个方法,实现方法网站找一下,这里不详细说明。

android:imeOptions
normal,actionUnspecified,actionNone,actionGo,actionSearch,actionSend,actionNext,actionDone,flagNoExtractUi,flagNoAccessoryAction,flagNoEnterAction
设置软键盘的Enter键。可用’|’设置多个。

android:imeActionId
设置IME动作ID,在onEditorAction中捕获判断进行逻辑操作。

android:imeActionLabel
设置IME动作标签。但是不能保证一定会使用,猜想在输入法扩展的时候应该有用。

android:includeFontPadding
true/false
设置文本是否包含顶部和底部额外空白,默认为true。

android:inputMethod
为文本指定输入法,需要完全限定名(完整的包名)

android:inputType
设置文本的类型,用于帮助输入法显示合适的键盘类型。有如下值设置:none、text、textCapCharacters字母大小、textCapWords单词首字母大小、textCapSentences仅第一个字母大小、textAutoCorrect、textAutoComplete自动完成、textMultiLine多行输入、textImeMultiLine输入法多行(如果支持)、textNoSuggestions不提示、textEmailAddress电子邮件地址、textEmailSubject邮件主题、textShortMessage短信息(会多一个表情按钮出来)、textLongMessage长讯息?、textPersonName人名、textPostalAddress地址、textPassword密码、textVisiblePassword可见密码、textWebEditText作为网页表单的文本、textFilte文本筛选过滤、textPhonetic拼音输入、numberSigned有符号数字格式、numberDecimal可带小数点的浮点格式、phone电话号码、datetime时间日期、date日期、time时间。

android:linksClickable
设置链接是否点击连接,即使设置了autoLink

android:maxLines
设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示

android:minLines
设置文本的最小行数

android:lineSpacingExtra
设置行间距。

android:phoneNumber
true/false
设置为电话号码的输入方式。

android:privateImeOptions
提供额外的输入法选项(字符串格式)。

android:scrollHorizontally
true/false
设置文本超出TextView的宽度的情况下,是否出现横拉条。

android:selectAllOnFocus
如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。

android:shadowColor
指定文本阴影的颜色,需要与shadowRadius一起使用。

android:shadowRadius
设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。

android:shadowDx
设置阴影横向坐标开始位置。

android:shadowDy
设置阴影纵向坐标开始位置。

android:textColorLink
#ffffff
文字链接的颜色.

android:maxHeight
设置文本区域的最大高度

android:minHeight
设置文本区域的最小高度

android:maxWidth
设置文本区域的最大宽度

android:minWidth
设置文本区域的最小宽度

android:clickable
true/false
view是否能对click事件作出反应

android:onClick
当view被click之后,view的context的哪个方法被呼叫。通常这个context是指view所在的Activity。例如:android:onClick='sayHello',则相应的Activity里面有一个方法public void sayHello(View view)方法,当这个view被click之后,sayHello方法就会被调用。

android:longClickable
true/false
view是否可以对长时间的click事件作出反应。

android:focusable
view是否能响应焦点事件

android:cacheColorHint
#00000000
滚动时,列表里面的view重绘时,用的依旧是系统默认的透明色,颜色值为#FF191919,要改变这种情况,只需要调用 listView的setCacheColorHint(0),颜色值设置为0或者xml文件中listView的属性 Android:cacheColorHint="#00000000"即可,滚动时,重绘View的时候就不会有背景颜色。

android:fadingEdgeLength
设置边框渐变的长度。

android学习日记03--常用控件Dialog的更多相关文章

  1. android学习日记03--常用控件checkbox/radiobutton

    常用控件3.checkbox 复选框,确定是否勾选,点击一下勾选,点击第二下取消,当有一系列备选项时适合用checkbox控件,方便用户提交数据. 贴上例子Activity的java代码 packag ...

  2. android学习日记03--常用控件button/imagebutton

    常用控件 控件是对数据和方法的封装.控件可以有自己的属性和方法.属性是控件数据的简单访问者.方法则是控件的一些简单而可见的功能.所有控件都是继承View类 介绍android原生提供几种常用的控件bu ...

  3. android学习日记03--常用控件ListView

    常用控件 8.ListView 列表视图,比如游戏的排行榜.列表数据可以根据屏幕大小自适应 列表的显示需要三个元素: a.ListVeiw:用来展示列表的View. b.适配器:用来把数据映射到Lis ...

  4. android学习日记03--常用控件tabSpec/tabHost

    常用控件7.TabSpec和TabHost 比较常用的控件,感觉手机QQ的整体布局就是这个,只不过tab放在底部而已.TabSpec相当于浏览器的分页,而TabHost就相当于分页的集合TabSpec ...

  5. android学习日记03--常用控件progressbar/seekbar

    常用控件 5.progressbar 进度条,比较常用的组件,在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度.一个进度条也 ...

  6. Android学习笔记_30_常用控件使用

    一.状态栏通知(Notification): 如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息.发送消息的代码如下: public void sendNotice(View v){ int ic ...

  7. Android布局属性与常用控件

    一.Android常用布局属性 1. LinearLayout的特有属性 android:orientation:设置布局排列方式   android:layout_weight:设置所占布局的权重  ...

  8. Android SDK提供的常用控件Widget “常用控件”“Android原生”

    Android提供一个标准的视图工具箱来帮助创建简单的UI界面.通过使用这些控件(必要时,可以对这些控件进行修改). 创建一个简单的.xml文件,从预览窗口可以看到Android SDK提供的原生控件 ...

  9. Android开发UI之常用控件的使用

    1.日期选择控件 DatePickerDialog 代码: btnChooseDate=(Button) findViewById(R.id.btnChooseDate); btnChooseDate ...

随机推荐

  1. bzoj2245

    这道题还是比较简单的费用流,由于w是递增的 实际上,这题数据还可以强一点,比如说分段函数不保证费用递增, 就要加一点技巧了(要保证函数的顺序) ; type node=record        ne ...

  2. Self-Paced Training (1) - Introduction to Docker

    helloworld: wget -qo- https://get.docker.com/ | sh sudo docker run hello-world sudo usermod -aG dock ...

  3. 用TIMESTAMP类型取代INT和DATETIME

    时间在我们开发中应用非常普遍,大部分开发中我们将用Mysql的datetime格式来存储,但是对于经常用时间来排序或者查询的应用中,我们要将时间做成索引,这个就跟查询效率很有关系,但是很多程序员会用i ...

  4. po 时不生效时, 不要用点方法

    Dot notation for message sending is not supported in lldb. Use bracket notation and cast the result ...

  5. android ListView注意事项

    所有问题,都是自己遇到过的. 但内容,有一半是自己写的,也有一半是复制过来. 所以,写成原创还请原谅 1. ListView添加标题后(addHeader())后,使用listView.getAdap ...

  6. Oracle数据库安装后,登录Database Control时密码错误

    解决方案1(实测可行): sys 和 system用户的用户名和密码还记得不?试试看如果不行,用sqlplus 在服务器本地登录%sqlplus / as sysdbaSQL>alter use ...

  7. SQL Server 触发器:表的特定字段更新时,触发Update触发器

    create trigger TR_MasterTable_Updateon MasterTableafter updateas if update ([Type])--当Type字段被更新时,才会触 ...

  8. SqlServer将日期格式DateTime转换成varchar类型

    Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE( ...

  9. [LeetCode]LRU Cache有个问题,求大神解答【已解决】

    题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...

  10. ADB Server Didn’t ACK ,failed to Start Daemon 解决方法

    解决方法如下: 1.adb nodaemon server 查看不能执行的原因,输出: cannot bind ‘tcp:5037’ 2.定位到了是端口的问题!是5037端口被占用了! 3.netst ...