dxp控件总结

时间:2019-05-13 18:11:31下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《dxp控件总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《dxp控件总结》。

第一篇:dxp控件总结

From 属性:

1.MaximizeBox:是否显示最小化按钮。2.MinimizeBox:是否显示最大化按钮。

3.FormBorderStyle:窗口样式,如FixedSingle:固定大小。4.StartPosition:初始显示的位置,CenterScreen:中心。

事件:

TreeList: 属性:

1.隐藏列头:设置OptionsView中的ShowColumns改为false 2.隐藏每行最左边的指示箭头:设置OptionsView中的ShowIndicator改为false 3.隐藏父节点的指示箭头:设置OptionsView中的ShowRoot改为false 4.selectImageList:给TreeList绑定imageCollection 5.OptionsView.ShowVertLines:是否显示网格线(竖直的)6.OptionsView.ShowHorzLines:是否显示网格线(水平的)

7.OptionsSelection.EnableAppearanceFocusedCell:选中单元格,是否改变该单元格外观(选中后该单元格有边线或不显示边线)

8.OptionsSelection.EnableAppearanceFocusedRow:选中行。是否改变该行的外观(选中后该行底色是否变化)

9.OptionsView.ShowCheckBoxes:是否在每一行前显示勾选框。

事件:

1.FocusedNodeChanged:焦点改变后触发

2.treeList_Enter:第一次点击是触发,初始化控件时候,焦点会在第一行,此时就触发。3.CustomNodeCellEdit:鼠标选中某个Cell时触发,可以实现动态的设定Cell绑定的控件类型 4.MouseDoubleClick:双击节点触发

5.FocusedColumnChanged:选中列改变时触发,即前后点击的列不一样时触发(即使前后选中列不在一行,只要选中列改变就会触发,与行无关。若前后选中列中某列的ReadOnly = ture则不会触发该事件)

6.MouseDoubleClick:鼠标双击节点时触发。7.MouseUp:鼠标点击节点弹起时触发。(e.Button可以得到曾按下的是哪个按钮)8.SelectImageClick:点击SelectImage触发 9.StateImageClick:点击StateImage触发 10.BeforeExpand:节点展开之前 11.BeforeFocusNode:焦点选中之前

DevExpress.XtraTreeList.StyleFormatConditions.StyleFormatCondition styleFormatCondition = new DevExpress.XtraTreeList.StyleFormatConditions.StyleFormatCondition();styleFormatCondition.Appearance.ForeColor = System.Drawing.Color.DarkGray;styleFormatCondition.Appearance.Options.UseForeColor = true;styleFormatCondition.ApplyToRow = true;styleFormatCondition.Condition = DevExpress.XtraGrid.FormatConditionEnum.Expression;styleFormatCondition.Expression = “[Style]”;this.treeList1.FormatConditions.Add(styleFormatCondition);

treeListColumn:TreeList中添加的列

属性:

1.表示这一列为只读:OptionsColumn中的ReadOnly = True 2.固定列的宽度不变:OptionsColumn中的FixedWidth = True 3.表示这一列不可编辑(无法实现复制):OptionsColumn中的AllowEdit = False 4.FieldName: 5.UnboundType:

6.SortOrder:列表中的项排序,SortOrder =Descending,递减排序。SortOrder = Ascending,递增排序。

treeList.AppendNode();//添加节点(TreeListNode)

TreeListNode:(TreeList中的节点)

属性: 1.ImageIndex:正常情况下节点前面显示的图片的索引

2.SelectImageIndex:选中节点时节点前边显示的图片的索引

3.StateImageIndex:节点开头显示的图片索引(在SelectImageIndex之后)4.Level:节点的级别(0:根节点、1:一级节点···)imageCollection 属性:

1.Images:在imageCollection中添加图片

ImageComboBoxEdit ComboBoxEdit 属性:

1.调整下拉菜单直观显示出来的行数(即不用滚动条就可以看的到的行数):DropDownRows 2.Properties.Items:绑定数据源

3.Properties.TextEditStyle:Standard(可输入,可选),HideTextEditor(只能通过下拉菜单选择,选中后不在界面上显示),DisableTextEditor(只能通过下拉菜单选择并且选中后在界面上显示)

4.ToolTip:

5.SelectedIndex:选择的Item的索引(get,set)

事件:

1:EditValueChanged:只要是值改变就会触发 2:SelectedIndexChanged:(值改变触发)SelectedIndex改变触发。3:SelectedValueChanged:(值改变触发)SelectedValue改变触发。

4:DrawItem:光标在下拉菜单上移动的时候触发,即光标在选择项上来回移动时触发

ComboBox(win)

属性:

1.DroppedDown:设置/获取下拉菜单是否展开。

2.SelectionStart:设置光标的位置(输入文本时用,设置为Text.Length可以保证光标在最后一个字符的后面,避免将前边的字符覆盖掉)。事件:

1.TextUpdate:输入的值时(text属性值改变时)触发。(在TextChanged事件之前)2.TextChanged:输入的值时(text属性值改变时)触发。(在TextUpdate事件之后)3.MouseDown:鼠标在控件上按下时触发。

LabelControl:

属性: 事件:

notePane:

属性:

1.MaxRow:设置notePane最大显示行数

TextEdit:单行文本输入

事件:

1.EditValueChanged:TextEdit值改变时候触发

2.Validating:焦点离开TextEdit时触发,验证有效性(有效性的标准通过自己在事件里面的代码来写,若设置了EditMask,进入该事件会先自动根据EditMask为标准来验证有效性,完成之后执行事件里面的代码)3.KeyPress:键盘按下某一个键触发。

属性:

1.TextEdit.Mask.EditMask:可以规定输入的格式,类似正则表达式

2.TextEdit.Mask.MaskType:指定可填写的文本类型(如:数字、字符串或者是根据正则表达式(RegEx)来约束···EditMask与MaskType配合使用,若MaskType= RegEx,EditMas = 某正则表达式,当MaskType是DateTime,Numeric时,EditMask为指定的相应类型)3.MaxLength:可填的最大字符长度,仅当MaskType = None时有效

4.TextEdit.Mask.BeepOnError:当用户输入不满足EdiMask要求时,是否发beep声。5.UseSystemPasswordChar: true –密码框(输入的内容在界面上是 ****)6.实现水印文字:Properties.NullValuePrompt = “输入密码”

Properties.NullValuePromptShowForEmptyValue = true;

memoEdit:多行文本输入

属性: 事件:

checkEdit:

属性:

1.Checked:是否选中

事件:

1.CheckedChanged:勾选状态改变时触发(选中变不选中,不选中变选中)

checkedListBoxControl:(实现多选框)

属性: 事件:

1.DrawItem:光标在选择菜单上移动的时候触发,即光标在选择项上来回移动时触发(与ComboBoxEdit的DrawItem事件相似)2.ItemCheck:勾选或取消勾选Item时触发。(e.Index:点击的Item的索引,e.State:改变的状态)3.方法: 1.UnCheckAll();//全部不选 2.CheckAll();//全选中

PopupContainerEdit:

属性:

1. Properties.PopupControl:(PopupContainerEdit和PopupContainerControl组合,实现下拉组合框)this.popupContainerEdit1.Properties.PopupControl = this.popupContainerControl1;

事件:

1.EditValueChanged 2.QueryResultValue PopupContainerControl:

属性: 事件:

splitContainerControl: barManager: popupMenu:

lookUpEdit:

属性:

1.Properties.DataSource:绑定数据(可以直接将list<>赋值给它)。

2.Properties.TextEditStyle:Standard(可输入),HideTextEditor(只能通过下拉菜单选择,选中后不在界面上显示),DisableTextEditor(只能通过下拉菜单选择并且选中后在界面上显示)3.事件:

panelControl:

属性:

1.BorderStyle(边框风格):NoBorder–无边框,事件:

wizardControl:

属性:

1.HeaderImage:右上角图片。2.CancelText:3.FinishText:4.NextText:5.PreviousText:

当在最后一页时中间按钮变为“结束”

事件:

1.CancelClick:点击“取消”触发。2.FinishClick:最后一页点击结束触发。3.SelectedPageChanging:切换页面时触发。(e.Direction:判断是向前翻页还是向后翻页,e.Page:新页)

4.SelectedPageChanged:切换页面后触发。(e.PrevPage:旧页)

wizardPage:(wizardControl中的每一页)

属性:

1. DescriptionText:2. Text:

事件:

1.PageValidating:验证事件。(e.Direction:判断是向前翻页还是向后翻页,e.Valid = false;翻不过去)2.simpleButton:

属性:

1.事件: buttonEdit:

属性: 事件:

dropDownButton: 属性:

1.DropDownControl:(dropDownButton控件实现下拉框)

增加2个控件barManager1。

dropDownButton 的DropDownControl属性选择popupMenu1。popupMenu1的Manager属性选择事件:

radioGroup:

属性: 事件:

spinEdit:

属性:

1.Appearance.TextOptions.HAlignment:输入的文本的位置,如:Near,近前边。,靠事件:

GridControl 事件: 1.MouseDoubleClick:双击某一行。

gridView

属性:

1.OptionsBehavior.Editable:是否可用

vGridControl 属性:

1.2.3.4.5.OptionsBehavior.Editable:是否可用

OptionsBehavior.ResizeHeaderPanel:是否可以拖拽改变每一行的高度 OptionsBehavior.ResizeRowHeaders:是否可以拖拽改变每一列的宽度。LayoutStyle:布局风格

OptionsView.AutoScaleBands:当LayoutStyle为SingleRecordViewBandsView,设置该属性为true,列宽自动填充 6.XtraTabControl 属性:

1.ClosePageButtonShowMode:如何显示每个tabPage上的关闭按钮。

如:InActiveTabPageHeader:当TabPage为当前选中时显示关闭按钮。2.HeaderLocation:标签位置(上下左右)3.ShowTabHeader:是否显示标签

4.HeaderOrientation:标签方向(Horizontal:水平,Vertical竖直)5.HeaderButtons:当tabpage过多,需要翻页时,设置翻页按钮如何组合。如

6.TabPageWidth:统设标签宽度。

事件:

1.CloseButtonClick:点击标签上的X按钮事件

XtraTabPage:

属性:

1.ShowCloseButton:是否显示关闭按钮。2.TabPageWidth:这一页的标签宽度。

第二篇:总结数位DP算法

数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。比如,[1,10000] 中统计不含有4的数。

所谓数位dp,字面意思就是在数位上进行dp咯。就是对数字每一位每一位递推

此类题目最基本的暴力方法:

1.for(int i=le;i<=ri;i++)

2.if(Check(i))ans++;

而数位DP就是从最低(高)位起,一位一位的放数字,然后记忆化一下,累加一下

有两种方法,一是递推,二是记忆化搜索

一,记忆化搜索:

思路来自: 数位dp总结之从入门到模板 假设题目要求是不含有62的数

状态定义:d[pos][pre] 表示当前枚举到pos位置,且pos+1位的数字是pre,此时满足题意的数字的个数(也即是pre==6时,pos该位置不能放2)还要个数组a[i]保存第i位的数字,如213,a[0]=3,注意是从右往左数

有个问题是枚举第pos位数时,此位置放数字的范围要判断一下,比如题目给出在[1,894] 枚举的时候要判断是否在894以内

比如,213,第一位放了2,那么第二位就只能放0~1,所以模板中用了个limit判断pos前的几位数字是否与n一样,true的话只能枚举0~a[pos],false就是0~9,不然比题目要求的213大了

还有个问题是前导0的问题,假如枚举5位数,你放的时候前2位都是00,那数字不变成3位了嘛,所以需要个lead保存前几位是否都是0,当然这是看题意的,有时候题目不要求,可以直接省去

好了,看模板:

1.typedef long long ll;2.int a[20];

3.ll dp[20][state];//不同题目状态不同

4.ll dfs(int pos,/*state变量*/,bool lead/*前导零*/,bool limit/*数位上界变量*/)//不是每个题都要判断前导零

5.{

6.//递归边界,既然是按位枚举,最低位是0,那么pos==-1说明这个数我枚举完了

7.if(pos==-1)return 1;/*这里一般返回1,表示你枚举的这个数是合法的,那么这里就需要你在枚举时必须每一位都要满足题目条件,也就是说当前枚举到pos位,一定要保证前面已经枚举的数位是合法的。不过具体题目不同或者写法不同的话不一定要返回1 */ 8.//第二个就是记忆化(在此前可能不同题目还能有一些剪枝)

9.if(!limit &&!lead && dp[pos][state]!=-1)return dp[pos][state];10./*常规写法都是在没有限制的条件记忆化,这里与下面记录状态是对应,具体为什么是有条件的记忆化后面会讲*/

11.int up=limit?a[pos]:9;//根据limit判断枚举的上界up;这个的例子前面用213讲过了

12.ll ans=0;13.//开始计数

14.for(int i=0;i<=up;i++)//枚举,然后把不同情况的个数加到ans就可以了

15.{

16.if()...17.else if()...18.ans+=dfs(pos-1,/*状态转移*/,lead && i==0,limit && i==a[pos])//最后两个变量传参都是这样写的

19./*这里还算比较灵活,不过做几个题就觉得这里也是套路了

20.大概就是说,我当前数位枚举的数是i,然后根据题目的约束条件分类讨论

21.去计算不同情况下的个数,还有要根据state变量来保证i的合法性,比如题目

22.要求数位上不能有62连续出现,那么就是state就是要保存前一位pre,然后分类,23.前一位如果是6那么这意味就不能是2,这里一定要保存枚举的这个数是合法*/

24.}

25.//计算完,记录状态

26.if(!limit &&!lead)dp[pos][state]=ans;

27./*这里对应上面的记忆化,在一定条件下时记录,保证一致性,当然如果约束条件不需要考虑lead,这里就是lead就完全不用考虑了*/

28.return ans;29.}

30.ll solve(ll x)31.{

32.int pos=0;

33.while(x)//把数位都分解出来

34.{

35.a[pos++]=x%10;//个人老是喜欢编号为[0,pos),看不惯的就按自己习惯来,反正注意数位边界就行

36.x/=10;37.}

38.return dfs(pos-1/*从最高位开始枚举*/,/*一系列状态 */,true,true);//刚开始最高位都是有限制并且有前导零的,显然比最高位还要高的一位视为0嘛

39.}

40.int main()41.{

42.ll le,ri;

43.while(~scanf(“%lld%lld”,&le,&ri))44.{

45.//初始化dp数组为-1,这里还有更加优美的优化,后面讲 46.printf(“%lldn”,solve(ri)-solve(le-1));47.} 48.}

注意:

那个if(!limit &&!lead &&dp[pos][state]!=-1)return dp[pos][state];limit 的数字必须要枚举,不能直接返回,每次都要算

虽然这会导致重复,但这可以解决状态冲突,而且重复计算的数字也很少 举例如下:

题目:不能出现连续的11(11、112、211都是不合法的)那么我们开始枚举:

要枚举3位数,已经枚举了两位01_,要枚举最后一位,此时状态为d[0][1] 即:在枚举个位,且前一位为1,那么显然得出d[0][1]=9 开始新的一轮枚举,枚举到11_,此时状态也是d[0][1] 因为已经有9这个值了,所以返回了,但很明显答案是0,是错的 当然可以多开一维防止状态冲突

可以看看数位DP模板题: HDU 2089 不要62 数位DP.二,递推方法

思路来自:初探数位dp

状态定义:d[i][j] 有i位数字,且第一位为j,在 0~j-1 + 000....999的符合题意的个数,如 d[4][3] 就是在 3000~3999 的符合题意的个数

还要个数组a[i]保存第i位的数字,如213,a[1]=3,注意是从右往左数(下面是从1开始数起了)

这样状态定义的能更加方便,可以预处理,因为当一个数字的第一位比题目要求的第一位小后,后面的几位能000..~999..如4269,如果第一位枚举 3 _ _ _,那么后三位可以任取

模板如下:

1.for(int i=1;i<=7;i++)//枚举位数

2.{

3.for(int j=0;j<10;j++)//枚举第i位可能出现的数

4.{

5.for(int k=0;k<10;k++)//枚举第i-1位可能出现的数

6.{

7.if(j!=4&&!(j==6&&k==2))//符合题意的条件

8.dp[i][j] += dp[i-1][k];9.} 10.} 11.}

以HDU 2089,解释怎么算出答案(不含4,62的数字)

1.#include

2.#include 3.#include

4.#include

5.using namespace std;6.int d[10][10],digit[10];

7.//d[i][j] 表示有i位数字,且第一位是j的数字的 满足题意的数量

8.void init()9.{

10.d[0][0]=1;

11.for(int i=1;i<=7;i++)12.for(int j=0;j<=9;j++)13.for(int k=0;k<=9;k++)14.if(j!=4&&!(j==6&&k==2))15.d[i][j]+=d[i-1][k];16.}

17.int solve(int x)// [0,x)

18.{

19.int len=0;20.while(x){

21.digit[++len]=x%10;22.x/=10;23.}

24.digit[len+1]=0;25.int ans=0;

26.for(int i=len;i>=1;i--){

27.for(int j=0;j

28.if(j!=4&&!(j==2&&digit[i+1]==6))29.ans+=d[i][j];30.31.if(digit[i]==4||(digit[i+1]==6&&digit[i]==2))32.break;33.}

34.return ans;35.}

36.int main(int argc, char const *argv[])37.{

38.int n,m;39.init();

40.while(cin>>n>>m,n+m)41.cout<

42.return 0;43.}

假设一个数3229 得出

0000~0999 的个数 1000~1999 的个数 2000~2999 的个数 000~099 的个数 100~199 的个数 00~99 的个数 10~19 的个数 0~8 的个数 累加就是答案了

所以该区间是[0,n)是取不到的n的,注意计算的时候要加一个1

下面是一些题目:

HDU 2089 不要62和4 HDU 3555 含49的数

HDU 3652 含13且可以被13整除

codeforces 55d A 一个数字可以被它所有非零数整除的个数 POJ 3252 Round Numbers HDU 4734 F(x)HDU 3709 Balanced Number HYSBZ 1799 self 同类分布

URAL 1057 Amount of Degrees * HDU 4507 吉哥系列故事——恨7不成妻 *

总结:

可能要用到的数位DP的题目类型:

1~10^18,求某区间(很大),有特定要求的数字的个数 如求mod,求和,可以整除各位数,不出现某些数...框架:

int DFS(intpos,......)//DFS一位一位放数字,求出答案,函数的参数保存题目要求的状态

int solve(int n)//把n一位一位拆分,求出[1,n] 的符合要求的值

难点:定义好状态!

1.dp状态要找好,不要出现状态重叠现象,注意前导0有没有影响

2.题目有求和sum,可能会很大,但可以转化为保存sum对一个数求mod的值 3.有时候dp状态定义不好可能要求每次DFS都要memset一下,换换思路想想通用的状态定义,如sum从加法改为减法

第三篇:iOS UITextField控件总结

iOS UITextField控件总结

//初始化textfield并设置位置及大小

UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];

//设置边框样式,只有设置了才会显示边框样式

text.borderStyle = UITextBorderStyleRoundedRect;typedef enum {

UITextBorderStyleNone,UITextBorderStyleLine,UITextBorderStyleBezel,UITextBorderStyleRoundedRect

} UITextBorderStyle;

//设置输入框的背景颜色,此时设置为白色 如果使用了自定义的背景图片边框会被忽略掉

text.backgroundColor = [UIColor whiteColor];

//设置背景

text.background = [UIImage imageNamed:@“dd.png”];

//设置背景

text.disabledBackground = [UIImage imageNamed:@“cc.png”];

//当输入框没有内容时,水印提示 提示内容为password text.placeholder = @“password”;

//设置输入框内容的字体样式和大小

text.font = [UIFont fontWithName:@“Arial” size:20.0f];

//设置字体颜色

text.textColor = [UIColor redColor];

//输入框中是否有个叉号,在什么时候显示,用于一次性删除输入框中的内容

text.clearButtonMode = UITextFieldViewModeAlways;

typedef enum {

UITextFieldViewModeNever, 从不出现

UITextFieldViewModeWhileEditing, 编辑时出现

UITextFieldViewModeUnlessEditing, 除了编辑外都出现

UITextFieldViewModeAlways 一直出现 } UITextFieldViewMode;

//输入框中一开始就有的文字

text.text = @“一开始就在输入框的文字”;

//每输入一个字符就变成点 用语密码输入

text.secureTextEntry = YES;

//是否纠错

text.autocorrectionType = UITextAutocorrectionTypeNo;

typedef enum {

UITextAutocorrectionTypeDefault, 默认

UITextAutocorrectionTypeNo, 不自动纠错

UITextAutocorrectionTypeYes, 自动纠错 } UITextAutocorrectionType;

//再次编辑就清空

text.clearsOnBeginEditing = YES;

//内容对齐方式

text.textAlignment = UITextAlignmentLeft;

//内容的垂直对齐方式 UITextField继承自UIControl,此类中有一个属性contentVerticalAlignment text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

//设置为YES时文本会自动缩小以适应文本窗口大小.默认是保持原来大小,而让长文本滚动

textFied.adjustsFontSizeToFitWidth = YES;

//设置自动缩小显示的最小字体大小

text.minimumFontSize = 20;

//设置键盘的样式

text.keyboardType = UIKeyboardTypeNumberPad;

typedef enum {

UIKeyboardTypeDefault,默认键盘,支持所有字符

UIKeyboardTypeASCIICapable, 支持ASCII的默认键盘

UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符

UIKeyboardTypeURL,URL键盘,支持.com按钮 只支持URL字符 UIKeyboardTypeNumberPad,数字键盘 UIKeyboardTypePhonePad,电话键盘

UIKeyboardTypeNamePhonePad, 电话键盘,也支持输入人名 UIKeyboardTypeEmailAddress, 用于输入电子 邮件地址的键盘

UIKeyboardTypeDecimalPad,数字键盘 有数字和小数点

UIKeyboardTypeTwitter,优化的键盘,方便输入@、#字符

UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, } UIKeyboardType;

//首字母是否大写

text.autocapitalizationType = UITextAutocapitalizationTypeNone;

typedef enum {

UITextAutocapitalizationTypeNone, 不自动大写

UITextAutocapitalizationTypeWords, 单词首字母大写

UITextAutocapitalizationTypeSentences, 句子的首字母大写

UITextAutocapitalizationTypeAllCharacters, 所有字母都大写 } UITextAutocapitalizationType;

//return键变成什么键

text.returnKeyType =UIReturnKeyDone;

typedef enum {

UIReturnKeyDefault, 默认 灰色按钮,标有Return

UIReturnKeyGo, 标有Go的蓝色按钮

UIReturnKeyGoogle,标有Google的蓝色按钮,用语搜索

UIReturnKeyJoin,标有Join的蓝色按钮

UIReturnKeyNext,标有Next的蓝色按钮

UIReturnKeyRoute,标有Route的蓝色按钮

UIReturnKeySearch,标有Search的蓝色按钮

UIReturnKeySend,标有Send的蓝色按钮

UIReturnKeyYahoo,标有Yahoo的蓝色按钮

UIReturnKeyYahoo,标有Yahoo的蓝色按钮

UIReturnKeyEmergencyCall, 紧急呼叫按钮 } UIReturnKeyType;

//键盘外观

textView.keyboardAppearance=UIKeyboardAppearanceDefault; typedef enum { UIKeyboardAppearanceDefault,默认外观,浅灰色 UIKeyboardAppearanceAlert,深灰 石墨色

} UIReturnKeyType;

//设置代理 用于实现协议

text.delegate = self;

//把textfield加到视图中

[self.window addSubview:text];//最右侧加图片是以下代码

左侧类似

UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@“right.png”]];

text.rightView=image;

text.rightViewMode = UITextFieldViewModeAlways;

typedef enum {

UITextFieldViewModeNever,UITextFieldViewModeWhileEditing,UITextFieldViewModeUnlessEditing,UITextFieldViewModeAlways } UITextFieldViewMode;

//按return键 键盘往下收 becomeFirstResponder

类要采用UITextFieldDelegate协议

text.delegate = self;声明text的代理是我,我会去实现把键盘往下收的方法 这个方法在UITextFieldDelegate里所以我们要采用UITextFieldDelegate这个协议

-(BOOL)textFieldShouldReturn:(UITextField *)textField { [text resignFirstResponder];//主要是[receiver resignFirstResponder]在哪调用就能把receiver对应的键盘往下收 return YES;}

重写绘制行为

除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围。以下方法都可以重写。

– textRectForBounds:

//重写来重置文字区域

– drawTextInRect:

//改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.– placeholderRectForBounds: //重写来重置占位符区域

– drawPlaceholderInRect: //重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.– borderRectForBounds: //重写来重置边缘区域 – editingRectForBounds: //重写来重置编辑区域

– clearButtonRectForBounds: //重写来重置clearButton位置,改变size可能导致button的图片失真 – leftViewRectForBounds: – rightViewRectForBounds: 委托方法

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

//返回一个BOOL值,指定是否循序文本字段开始编辑

return YES;}

-(void)textFieldDidBeginEditing:(UITextField *)textField{ //开始编辑时触发,文本字段将成为first responder }

-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{

//返回BOOL值,指定是否允许文本字段结束编辑,当编辑结束,文本字段会让出first responder

//要想在用户结束编辑时阻止文本字段消失,可以返回NO

//这对一些文本字段必须始终保持活跃状态的程序很有用,比如即时消息

return NO;}

-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

//当用户使用自动更正功能,把输入的文字修改为推荐的文字时,就会调用这个方法。

//这对于想要加入撤销选项的应用程序特别有用

//可以跟踪字段内所做的最后一次修改,也可以对所有编辑做日志记录,用作审计用途。

//要防止文字被改变可以返回NO

//这个方法的参数中有一个NSRange对象,指明了被改变文字的位置,建议修改的文本也在其中

return YES;}

-(BOOL)textFieldShouldClear:(UITextField *)textField{

//返回一个BOOL值指明是否允许根据用户请求清除内容

//可以设置在特定条件下才允许清除内容

return YES;}

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

//返回一个BOOL值,指明是否允许在按下回车键时结束编辑

//如果允许要调用resignFirstResponder 方法,这回导致结束编辑,而键盘会被收起[textField resignFirstResponder];//查一下resign这个单词的意思就明白这个方法了

return YES;}

通知

UITextField派生自UIControl,所以UIControl类中的通知系统在文本字段中也可以使用。除了UIControl类的标准事件,你还可以使用下列UITextField类特有的事件

UITextFieldTextDidBeginEditingNotification UITextFieldTextDidChangeNotification UITextFieldTextDidEndEditingNotification 当文本字段退出编辑模式时触发。通知的object属性存储了最终文本。因为文本字段要使用键盘输入文字,所以下面这些事件发生时,也会发送动作通知

UIKeyboardWillShowNotification //键盘显示之前发送 UIKeyboardDidShowNotification //键盘显示之后发送 UIKeyboardWillHideNotification //键盘隐藏之前发送 UIKeyboardDidHideNotification //键盘隐藏之后发送

1、Text :设置文本框的默认文本。

2、Placeholder : 可以在文本框中显示灰色的字,用于提示用户应该在这个文本框输入什么内容。当这个文本框中输入了数据时,用于提示的灰色的字将会自动消失。

3、Background :

4、Disabled : 若选中此项,用户将不能更改文本框内容。

5、接下来是三个按钮,用来设置对齐方式。

6、Border Style : 选择边界风格。

7、Clear Button : 这是一个下拉菜单,你可以选择清除按钮什么时候出现,所谓清除按钮就是出一个现在文本框右边的小 X,你可以有以下选择:

7.1 Never appears : 从不出现

7.2 Appears while editing : 编辑时出现

7.3 Appears unless editing :

7.4 Is always visible : 总是可见

8、Clear when editing begins : 若选中此项,则当开始编辑这个文本框时,文本框中之前的内容会被清除掉。比如,你现在这个文本框 A 中输入了 “What”,之后去编辑文本框 B,若再回来编辑文本框 A,则其中的 “What” 会被立即清除。

9、Text Color : 设置文本框中文本的颜色。

10、Font : 设置文本的字体与字号。

11、Min Font Size : 设置文本框可以显示的最小字体(不过我感觉没什么用)

12、Adjust To Fit : 指定当文本框尺寸减小时,文本框中的文本是否也要缩小。选择它,可以使得全部文本都可见,即使文本很长。但是这个选项要跟 Min Font Size 配合使用,文本再缩小,也不会小于设定的 Min Font Size。接下来的部分用于设置键盘如何显示。

13、Captitalization : 设置大写。下拉菜单中有四个选项:

13.1 None : 不设置大写

13.2 Words : 每个单词首字母大写,这里的单词指的是以空格分开的字符串

13.3 Sentances : 每个句子的第一个字母大写,这里的句子是以句号加空格分开的字符串

13.4 All Characters : 所以字母大写

14、Correction : 检查拼写,默认是 YES。

15、Keyboard : 选择键盘类型,比如全数字、字母和数字等。

16、Appearance:

17、Return Key : 选择返回键,可以选择 Search、Return、Done 等。

18、Auto-enable Return Key : 如选择此项,则只有至少在文本框输入一个字符后键盘的返回键才有效。

19、Secure : 当你的文本框用作密码输入框时,可以选择这个选项,此时,字符显示为星号。

1.Alignment Horizontal 水平对齐方式 2.Alignment Vertical 垂直对齐方式

3.用于返回一个BOOL值 输入框是否 Selected(选中)Enabled(可用)Highlighted(高亮)

限制只能输入特定的字符

(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

NSCharacterSet *cs;

cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];

NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@“"];//按cs分离出数组,数组按@”“分离出字符串

BOOL canChange = [string isEqualToString:filtered];

return canChange;}

上面那个NUMBERS是一个宏,可以在文件顶部定义:

#define NUMBERS @”0123456789n”(这个代表可以输入数字和换行,请注意这个n,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入n,好惨,我在项目中才发现的。)所以,如果你要限制输入英文和数字的话,就可以把这个定义为: #define kAlphaNum @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。当然,你还可以在以上方法return之前,做一提示的,比如提示用户只能输入数字之类的。如果你觉得有需要的话。

限制只能输入一定长度的字符

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;{ //string就是此时输入的那个字符 textField就是此时正在输入的那个输入框 返回YES就是可以改变输入框的值 NO相反

if([string isEqualToString:@”n“])//按回车可以改变

{

return YES;

}

NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];//得到输入框的内容

if(self.myTextField == textField)//判断是否时我们想要限定的那个输入框

{

if([toBeString length] > 20){ //如果输入框内容大于20则弹出警告

textField.text = [toBeString substringToIndex:20];

UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:@”超过最大字数不能输入了“ delegate:nil cancelButtonTitle:@”Ok" otherButtonTitles:nil, nil] autorelease];

[alert show];

return NO;

}

}

return YES;}

第四篇:手机Android系统常用控件总结

找工作,上长沙英才网

手机Android系统常用控件总结

Notepad++编写 可以负责粘贴到其中去 看得更清楚。(内容包括了Android中的大部分常用控件及其事件的监听)第一章

1.1 Android中src文件夹包含项目的所有包及其资源文件,res文件夹包含了项目中所有的资源。比如:程序图标(drawable),布局文件(layout),常量(value),音频文件(raw)R.java是在创建项目是自动生成的只读文件,不可更改此文件。R文件其作用:是定义项目中所有资源的索引文件。

1.2 AndroidManfest.xml 如下:

package=“Android.Summary” //引用程序包名 android:versionCode=“1” android:versionName=“1.0”> //使用SDK版本号

//应用程序名字

找工作,上长沙英才网

/ //描述了Activity的启动时间和位置,另外为了支持查找Activity可以包含一个或多个 //acton 为组件支持的Intent action //categor 为组件支持的Intent category 这里指定了引用程序的默认启动的Activity //在此对新增的Activity进行注册。如果在不同的包中注意声明是将包名带上

1.3 String.xml如下:

//此处定义了两个字符串资源,即定义了app_name,hello常量

Hello World, SummaryActivity! Summary 如何使用这个资源呢?如下:

Resources r = this.getContext().getResources();//通过Context的getResource()实例化一个Resources对象

String app_name =((String)r.getString(R.string.app_name));//然后通过getString()方法取得指定的索引的字符串。项目中所有常量都可以在String.xml文件中定义

String hello =((String)r.getString(R.string.hello));

1.4 main.xml如下:

找工作,上长沙英才网

android:orientation=“vertical” //版面配置的方式。此为自上到下为垂直配置,“horizontal”为水平配置

android:layout_width=“fill_parent” //定义当前视图在屏幕上所占的宽度,“fill_parent”为填充整个屏幕宽度

/*android:layout_weight=“50”*/ //用于给一个布局中多个视图的重要度赋值

android:layout_height=“fill_parent” //定义当前视图在屏幕上所占的高度,...........................高度 >

android:text=“@string/hello” //在视图上显示的内容,此处引用了@String中的hello字符串 />

1.5 src下的java 如下: package Android.Summary;

import android.app.Activity;import android.os.Bundle;

public class SummaryActivity extends Activity { //继承自Activity /** Called when the activity is first created.*/ @Override

找工作,上长沙英才网

public void onCreate(Bundle savedInstanceState){ //重写onCreate()方法

super.onCreate(savedInstanceState);setContentView(R.layout.main);//设置要显示的布局 } } 第二章

2.1 Android应用程序由四个模块组成:Activity,Service,Intent,ContentProvider(注意:一个应用程序不一定包含全部的四个模块).在使用时必须在AandroidManfest中进行声明。

Activity可以理解为用户看到屏幕,主要用于处理应用程序的整体性工作。如: a.监听系统事件,触屏事件,为用户显示指定的View,启动其他Activity等。b.所有应用的Activity都继承于android.app.Activity,该类是Android提供的基层类。

c.一个Activity通常就是一个单独的屏幕。d.每一个活动都被实现为一个独立的类。e.大多数的应用程序都是由多个Activity组成。

Intent Aandroid中主要用Intent类实现从一个Activity跳转到另一个Activity。在Intent的描述结构中,有两个重要的部分:动作和对应的数据。

典型的动作有MAIN,VIEW,PICK,EDIT.而动作对应的数据则以URI的形式表示。例如:要查一个人的联系方式,需要创建一个动作类型View的Intent ,以及一个表示这个人的URI.Intent的使用:

button1.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ Intent intent = new Intent();//创建一个Intent对象

intent.setClass(Activity01.this,Activity02.class);//指明要启动的另一Activity02 startActivity(intent);//启动一个新的Activity

找工作,上长沙英才网

Activity01.this.finish();//关闭当前Activity01 } });这里需要注意在Android中对新启动的Activity进行声明。声明方式: //注意:如果在不同的包中在声明是还要加上包名

IntentReceiver 如果希望Android应用能够对外部事件(如电话打入时,数据网络可用时,)做出响应,可用使用IntentReceiver.虽然IntentReceiver在如上事件发生

时会使用NotificationManager通知用户,但它并不能生产UI。IntentReceiver可以在AndroidManifest.xml中注册,也可在代码中使用Context.registerReceiver 进行注册。当IntentReceiver被触发时,系统会在需要的时候启动应用。各种应用还可以通过ContentReceiver()将他们自己的IntentReceiver广播出去。???????

Content Provider 作用:主要用于不同应用程序中的数据的传递。Content Provider 是一个特殊的存储数据的类型。Android自身提供现成的Content Provider:Contacts ,Browser,CallLog,Settings,MediaStore 应用可用通过唯一的ContentResolver界面来使用具体的Conten Provider,然后可以用ContentResolver提供的方法来使用你需要的Content Provider 其中,ContentResolver提供的方法有query(),insert(),update()等。URI----String形式的Content Provider的完整路径。

下面这个这个例子通过ContentProvider获取电话本中的数据,然后显示到TextView中去。

public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){

找工作,上长沙英才网

TextView textView = new TextView(this);//得到TextView对象 String string = “";super.onCreate(savedInstanceState);

ContentResolver resolver = getContentResolver();//得到ContentResolver对象 Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);//取得电话本中开始一项的光标,通过query方法查询出符合标准的电话本记录 //向下移动光标

while(cursor.moveToNext()){ //取得联系人名字

int name_index = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);String name = cursor.getString(name_index);//取得电话号码

int number_index = cursor.getColumnIndex(PhoneLookup.NUMBER);String number = cursor.getString(number_index);

string +=(name+”:“+number+”n“);} cursor.close();textView.setText(string);//设置TextView显示的内容

setContentView(textView);//显示到屏幕上 其实TextView也是View的一种 } } 注意:在使用这些模块中用到了读取联系人的API,所以必须在AndroidManifest.xml中声明

声明方式为:

找工作,上长沙英才网

Service 后台服务,没有界面

启动service方法: a.Context.startService()b.Context.bindService()//与上一种方法不同处 如果这个Service没有处于启动状态,则将其启动

下面这个例子以Activity中的俩个控件来控制播放一首Mp3.(例中:需要在res文件夹中创建一个raw文件夹 然后放入一首MP3)

public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);

//从main.xml布局中获得Button对象

Button button_start =(Button)findViewById(R.id.start);Button button_stop =(Button)findViewById(R.id.stop);//设置按钮(Button)监听

button_start.setOnClickListener(start);button_stop.setOnClickListener(stop);} //开始按钮

private OnClickListener start = new OnClickListener(){ public void onClick(View v){ //开启Service startService(new Intent(”com.yarin.Android.MUSIC“));} };//停止按钮

找工作,上长沙英才网

private OnClickListener stop = new OnClickListener(){ public void onClick(View v){ //停止Service stopService(new Intent(”com.yarin.Android.MUSIC“));} };}

public class MusicService extends Service{ //MediaPlayer对象

private MediaPlayer player;

public IBinder onBind(Intent arg0){ return null;} public void onStart(Intent intent, int startId){ super.onStart(intent, startId);//这里可以理解为装载音乐文件

player = MediaPlayer.create(this, R.raw.test);//开始播放 player.start();}

public void onDestroy(){ super.onDestroy();//停止音乐-停止Service player.stop();} }

AndroidManifest.xml文件中

找工作,上长沙英才网

2.2 Aandrod的生命周期

public class Activity02 extends Activity{ private static final String TAG = ”Activity02“;

public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main2);Log.v(TAG, ”onCreate“);} public void onStart(){ super.onStart();Log.v(TAG, ”onStart“);} public void onResume(){ super.onResume();Log.v(TAG, ”onResume“);} public void onPause(){ super.onPause();Log.v(TAG, ”onPause“);} public void onStop(){ super.onStop();Log.v(TAG, ”onStop“);

找工作,上长沙英才网

} public void onDestroy(){ super.onDestroy();Log.v(TAG, ”onDestroy“);} public void onRestart(){ super.onRestart();Log.v(TAG, ”onReStart“);} } 这些方法都是系统自动调用的。

第三章 3.1 事件处理

* 控件事件通过设置其控件的监听器来监听并处理事件 * 按键按下事件:通过重写onKeyDown方法 * 按键弹起事件:通过重写onKeyUp方法 * 触笔点击事件:通过实现onTouchEvent方法 * 示例中使用了Toast控件:

* Toast.makeText(this, string, Toast.LENGTH_SHORT).show();

public class Activity01 extends Activity{

public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);//获得Button对象

Button button_ok =(Button)findViewById(R.id.ok);

找工作,上长沙英才网

button_ok.setOnClickListener(new Button.OnClickListener(){------------------------//设置Button控件监听器

public void onClick(View v){ //这里处理事件

DisplayToast(”点击了OK按钮“);} });}

/* 按键按下所触发的事件*/ public boolean onKeyDown(int keyCode, KeyEvent event){ switch(keyCode){ case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast(”按下:中键“);break;case KeyEvent.KEYCODE_DPAD_UP: DisplayToast(”按下:上方向键“);break;case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast(”按下:下方向键“);break;case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast(”按下:左方向键“);break;case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast(”按下:右方向键“);break;} return super.onKeyDown(keyCode, event);}

找工作,上长沙英才网

/* 按键弹起所触发的事件*/ public boolean onKeyUp(int keyCode, KeyEvent event){ switch(keyCode){ case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast(”弹起:中键“);break;case KeyEvent.KEYCODE_DPAD_UP: DisplayToast(”弹起:上方向键“);break;case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast(”弹起:下方向键“);break;case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast(”弹起:左方向键“);break;case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast(”弹起:右方向键“);break;} return super.onKeyUp(keyCode, event);} //用于响应按键重复点击,官方API指出onKeyMultiple方法总是返回false,即它没有handle,因此必须重写才能实现-------------------此方法没用过具体情况怎么样不是很清楚?

public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event){

return super.onKeyMultiple(keyCode, repeatCount, event);}

/* 触笔事件*/

找工作,上长沙英才网

public boolean onTouchEvent(MotionEvent event){ int iAction = event.getAction();//利用getAction得到所执行的动作 if(iAction == MotionEvent.ACTION_CANCEL || iAction == MotionEvent.ACTION_DOWN || iAction == MotionEvent.ACTION_MOVE){ return false;} //得到触笔点击的位置 int x =(int)event.getX();int y =(int)event.getY();//将获得的坐标转成String类型的方法 DisplayToast(”触笔点击坐标:(“+Integer.toString(x)+”,“+Integer.toString(y)+”)“);

return super.onTouchEvent(event);}

/* 显示Toast */ public void DisplayToast(String str){ Toast.makeText(this, str, Toast.LENGTH_SHORT).show();} } 我们分析了一些常用事件处理方式。每一个键都对应一个键值。当然也可根据需要来改变一些键的功能,需要我们自己构建KeyEvent对象------------------有待进一步学习

构造KeyEvent对象的几种方法: KeyEvent(int action,int code);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState);

找工作,上长沙英才网

KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode,int flags);KeyEvent(KeyEvent origEvent,long EventTime,int newRepart);例:

public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);} public boolean onKeyDown(int keyCode, KeyEvent event){ //这里构建KeyEvent对象,其功能为返回键的功能 //因此我们按任意键都会执行返回键功能

KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);

//这里传入的参数就是我们自己构建的KeyEvent对象key return super.onKeyDown(key.getKeyCode(), key);} } 3.2 常用控件 Button xml设计

代码设计Button button = new Button(this);

找工作,上长沙英才网

button.setText(”我是Button“);button.setWidth(123);//设置宽度 button.setHeight(123);//设置高度

button.setTextColor(Color.BLUE);//设置文字颜色 button.setTextSize(123);//设置字体大小

button.setBackgroundColor(Color.BLUE);//设置控件背景色

监听器

button.setOnClickListener(new Button.OnClickListener(){//设置按钮的事件监听

public void onClick(View v){ //处理按钮事件产生一个Toast.利用button.getText()得到按钮显示的内容

Toast toast = Toast.makeText(Activity01.this, ”你点击了““+button.getText()+””按钮!“, Toast.LENGTH_LONG);//设置toast显示的位置

toast.setGravity(Gravity.TOP, 0, 150);//显示该Toast toast.show();} });-TextView 一个用来显示文本的控件 xml设计

找工作,上长沙英才网

android:text=”你好“/> android:paddingLeft=”50px“ android:paddingTop=”5px“ android:paddingBottom=”5px“ android:textSize=”30sp“ android:singleLine=”true“ android:layout_below=”@id/imageView_handler“//在什么下

android:gravity =”left“ //用于设置View中内容相对于View组件的对齐方式,android:layout_gravity//用于设置View组件相对于Container的对齐方式。

android:paddingLeft=”30px“ // 按钮上设置的内容离按钮左边边界30个像素

android:layout_marginLeft=”30px“ //整个按钮离左边设置的内容30个像素

android:layout_weight=”1“//控件权重 即占的比例 默认值为0 android:gravity=”center_horizontal“//水平居中 android:padding=”3dip“

代码设计TextView textView = new TextView(this);//声明对象 textView.setTextColor(Color.RED);//设置字体颜色 textView.setTextSize(20);//设置字体大小

textView.setBackgroundColor(Color.BLUE);//控件背景色 textView.setText(”你好“)//显示的文字 textView.setHeight textView.setWidth textView.setVisibility(GONE/VISIBLE);//设置为不可见/可见 textView.setGravity(Gravity.CENTER);//设置文字权重

找工作,上长沙英才网

监听器TextView textView = new TextView(this);//得到对象 textview.setOnClickListener(new TextView.OnClickListener(){------------TextView监听器

public void onClick(View v){ } });---ImageButton 带图标的按钮 xml设计

代码中设计

imageButton.setImageDrawable(getResources().getDrawable(R.drawable.image2));//在代码中设计使用的图片(得到对象后)

监听器

imageButton.setOnClickListener(new Button.OnClickListener(){--------------ImageButton监听器

@Override public void onClick(View v){ //创建对话框

Dialog dialog = new AlertDialog.Builder(ImageButton_Dialog.this)

找工作,上长沙英才网

.setTitle(”ImageButton2“).setMessage(”跳转到系统图片“).setPositiveButton(”确定“, new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which){ // TODO Auto-generated method stub imageButton2.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_action_call));} }).create();dialog.show();} });---EditText xml设计

代码设计EditText editText = new EditText(this);//得到EditText对象 editText.setTextSize(20);//设置字体大小

找工作,上长沙英才网

editText.setHint(”请输入账号“);//设置当m_EditText中为空时提示的内容

监听器

editText.setOnKeyListener(new EditText.OnKeyListener(){----------EditText监听器 @Override public boolean onKey(View arg0, int arg1, KeyEvent arg2){

// 得到文字,将其显示到TextView中 m_TextView.setText(”文本框中内容是:“ + m_EditText.getText().toString());return false;} });--------------------CheckBox 多项选择 需要对没有按钮设置监听器 xml设计 监听器

checkBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){//对每个选项设置事件监听-------------------CheckBox监听器 @Override

找工作,上长沙英才网

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ if(m_CheckBox1.isChecked()){ DisplayToast(”你选择了:“+m_CheckBox1.getText());} } });----------------------Spinner 下拉列表

下面一个例子将可选内容通过ArrayAdapter和下拉列表连接起来。设置监听器 通过setVisibility方法设置当前显示项 main.xml

找工作,上长沙英才网

/>

public class Activity01 extends Activity{ private static final String[] string = { ”O型“, ”A型“, ”B型“, ”AB型“, ”其他“ };

private TextView m_TextView;private Spinner m_Spinner;private ArrayAdapter adapter;

@Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);

m_TextView =(TextView)findViewById(R.id.TextView1);m_Spinner =(Spinner)findViewById(R.id.Spinner1);

//将可选内容与ArrayAdapter连接

adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, string);

//设置下拉列表的风格

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

//将adapter添加到m_Spinner中 m_Spinner.setAdapter(adapter);

//添加Spinner事件监听

找工作,上长沙英才网

m_Spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){--------------------------Spinner监听器

@Override public void onItemSelected(AdapterView arg0, View arg1, int arg2, long arg3){ m_TextView.setText(”你的血型是:“ + string[arg2]);//设置显示当前选择的项

arg0.setVisibility(View.VISIBLE);}

@Override public void onNothingSelected(AdapterView arg0){ // TODO Auto-generated method stub });} } }---------RadioGroup , RadioButton 单选选择控件

一个单选选择由两部分组成,分别是前面的选择按钮和后面的内容。按钮通过RadioButton来实现,答案通过RadioGroup来实现

如果确定是选择哪一项那就要设置监听器setOnCheckedChangeListener.下面有一例子:本例中使用到了String.xml文件来定义常量。string.xml Android底层是基于什么操作系统?

找工作,上长沙英才网

Examples_04_07 Windows Linux Moc os Java

main.xml

找工作,上长沙英才网

android:layout_width=”wrap_content“ android:layout_height=”wrap_content“ android:text=”@string/RadioButton1“ />

public class Activity01 extends Activity{ TextView m_TextView;RadioGroup m_RadioGroup;RadioButton m_Radio1, m_Radio2, m_Radio3, m_Radio4;

@Override

找工作,上长沙英才网

public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);

m_RadioGroup =(RadioGroup)findViewById(R.id.RadioGroup01);//获得RadioGroup对象

m_Radio1 =(RadioButton)findViewById(R.id.RadioButton1);//获得4个RadioButton对象

m_Radio2 =(RadioButton)findViewById(R.id.RadioButton2);m_Radio3 =(RadioButton)findViewById(R.id.RadioButton3);m_Radio4 =(RadioButton)findViewById(R.id.RadioButton4);

/* 设置事件监听 */ m_RadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){---------------------------RadioGroup监听器 @Override public void onCheckedChanged(RadioGroup group, int checkedId){

if(checkedId == m_Radio2.getId()){ DisplayToast(”正确答案:“ + m_Radio2.getText()+ ”,恭喜你,回答正确!“);}else{ DisplayToast(”请注意,回答错误!“);} } });} public void DisplayToast(String str)//显示Toast{ Toast toast = Toast.makeText(this, str, Toast.LENGTH_LONG);//设置toast显示的位置

找工作,上长沙英才网

toast.setGravity(Gravity.TOP, 0, 220);//显示该Toast toast.show();} }--------------AutoCompletTextView 和MultiAutoCompleteTextView 作用:自动提示 下面例中用到了ArrayAdapter autoCompletTextView.xml

//如何实现如果输入的字符不在其范围内的也能得到提示 是继承TextWatcher?

找工作,上长沙英才网

public class Control_Auto extends Activity { //implements TextWatcher{} public TextView textView_auto;

private static final String[] string ={”ni hao“,”ni hao “,”ni hao ma“,”ni zheng de hao ma“,”nshis“};

public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.autocompletetextview);

//将可选内容与适配器ArrayAdapter连接 ArrayAdapter adapter= new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,string);

MultiAutoCompleteTextView multiAutoCompletTextView =(MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView);AutoCompleteTextView autoCompleteTextView =(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);

autoCompleteTextView.setAdapter(adapter);//将adapter添加到AutoCompletTextView中去

multiAutoCompletTextView.setAdapter(adapter);//将adapter添加到MultAutoCompleteTextView中去

multiAutoCompletTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());} }

找工作,上长沙英才网

/* //autoCompleteTextView.addTextChangedListener(this);---此为设置监听?

* 例子中没有涉及到的属性(可在布局文件中设置): AutoCompleteTextView是EditText的子类,所以你可以对它的对象进行诸如外观/字体/颜色等属性值的设置。

completionThreshold:它的值决定了你在AutoCompleteTextView至少输入几个字符,它才会具有自动提示的功能。另,默认最多提示20条。

dropDownAnchor:它的值是一个View的ID,指定后,AutoCompleteTextView会在这个View下弹出自动提示。

dropDownSelector:应该是设置自动提示的背景色之类的。

dropDownWidth:设置自动提示列表的宽度。

你可以通过setAdapter()来给AutoCompleteTextView添加一个包含候选值列表的适配器(adapter)。--------此处没实现过?

然而,由于用户可以输入一些不在候选值列表的数据,AutoCompleteTextView不支

持selection listener。不过,你可以注册一个TextWacther用于当用户输入文本发生变化时发出通知。

-------------------------DatePicker,TimePicker 日期和时间

下例中首先需要在布局文件中定义DatePicker和TimePicker,然后通过Canlendar类获得系统时间,接着通过init方法将日期传给DatePicker, 并设置OnDateChangedListener来监听日期改变,当时间被改变时需要设置setOnTimeChangedListener监听来设置时间。datepicker_timepicker.xml

找工作,上长沙英才网

>

下载dxp控件总结word格式文档
下载dxp控件总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    GridControl控件小结

    由于近期要使用gridcontrol控件,整理出来,以便以后参考:1.DevExpress控件组中的GridControl控件不能使横向滚动条有效。现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正......

    Web测试中,各类web控件测试点总结(推荐)

    Web测试中,各类web控件测试点总结 一 、界面检查 进入一个页面测试,首先是检查title,页面排版,字段等,而不是马上进入文本框校验 1、页面名称title是否正确 2、当前位置是否可见......

    百货商场DP点展台管理办法

    DP点展台是百货商场商品的重要窗口之一,有着显著的装饰和促销作用。 一、分配与使用申请 1、商场分别在各楼层设有展台,每个楼层负责本楼层展台招商。 2、厂商取得展台使用权......

    北大青鸟Y2学期_Net控件 总结

    --------ASP.Net总结---------- --------第一章--------------- 1.1 ASP.Net简介 定义:ASP.Net是基于B/S的应用程序,可创建动态、交互的Web页面的服务器端技术。特色和优势:(1......

    VB6控件LISTVIEW使用指南(本站推荐)

    功---- VB6无疑是当前最先进的编程工具之一,无论是它的代码编写还是与视窗98的完美结合, 都令人们特别是程序员们赞叹不已。在这里,我将自己在编程实践中对LISTVIEW控件的一......

    进口DP交单流程(废塑料)

    进口D/P交单流程(废塑料) 一、订立合同后,及时索要装箱图片及装箱情况;并要求对方将提单复印件传真到我司。 二、根据提单的相关内容查询船期,确定船的到港时间。 三、如在船到......

    MFC动态添加控件及响应函数

    MFC动态添加控件及响应函数 应该注意:控件也是一个窗口。在添加控件的时候空间变量最好是全部变量或者是局部指针变量,这样即使函数结束也不会造成变量被销毁。下面以动态添加......

    网络发票打印控件操作手册

    网络发票打印控件操作手册 1. 控件位置下载:首页>>常用软件下载>>下载中心>>办税软件>>网络开票打印控件. 2.下载解压之后,双击文件CLodopPrint_Setup_for_Win32NT_2.047.exe......