【转】Pro Android学习笔记(十四):用户界面和控制(2):Text类控制
2015-12-15 12:56
489 查看
目录(?)[-]
TextView
例子1在XML中设置autoLink属性
例子2在代码中设置autoLink属性
EditText
AutoCompleteTextView
MultiAutoCompleteTextView
我们在xml中设置<textview ... android:autoLink="email|web" />,可以设置的autoLink的有all,email,map,none(这是缺省值,表示不进行自动链接),phone,web。
tv.setAutoLinkMask(Linkify.PHONE_NUMBERS |Linkify.WEB_URLS); //设置web和phone
tv.setText(……); //需要注意,设置属性应该在setText()之前,否则该属性不能作用在已设置的text上
在某些情况下,例如只要求临时起作用,我们可能需要在设置text之后,才加上link属性,可用下面的方法。Linkify.addLinkes()还可用于Spannable控件。
tv.setText("My Phone : 87654321");
Linkify.addLinks(tv, Linkify.ALL); //需要注意,将Linkify.addLinkes()放置在setText()之前是不起作用的
hint。可以在EditText中用灰色字体显示提示,当用户点击输入时,该提示消失。在XML中,如下设定:
<EditText .... android:hint="@string/ui_text_et_hint"/>
EditText继承了TextView的一个重要属性是inputType。我们可以设置textAutoCorrect来检测拼写错误,可以通过textCapWords来自动设为每个单词的第一个字母为大写。还可以设置要求输入格式,例如textUri,textEmailAddress,textPassword等等。
<EditText .... android:inputType="textPersonName|textCapWords"/>
在老的版本中,很多属性都被移到inputType中设置,如果我们在xml中设置了inputType,这些过期的属性将会不起作用,例如android:capitalize。
新老版本中需要注意多行的问题,在老版本中,缺省是多行的,及当行不能全部显示,自动在下一行显示,如要单行显示则需要设置android:singleLine。但是当XML的属性设置了inputType,则缺省是单行的,如果要多行,则需设置android:inputType="textMultiLine"。
自动完成的control例子如上。XML如下:
<TextView ...... />
<AutoCompleteTextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ui_text_auto"/>
代码如下:
AutoCompleteTextView actv = (AutoCompleteTextView)findViewById(R.id.ui_text_auto);
//创建一个一个adpater类,包含有建议项,和显示建议的control
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, //显示建议内容的control
new String[]{"Chinese","English","French","Greek"}); //建议项
//关联adapter
actv.setAdapter(aa);
XML例子如下:
<MultiAutoCompleteTextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ui_text_auto_multi"/>
代码如下。同样要通过adapter设置建议项,以及显示建议项的control,并通过setAdapter()与该控件相关联。此外,还需要通过Tokenizer告诉系统什么时候重新进行匹配。
MultiAutoCompleteTextView mt =(MultiAutoCompleteTextView) findViewById(R.id.ui_text_auto_multi);
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line,
new String[]{"Chinese","English","French","Greek","Spainish"});
mt.setAdapter(aa);
//通过setTokenizer()告之以什么作为分割,什么时候开始进行匹配。通过实现MultiAutoCompleteTextView.Tokenizer接口,提供分割方式。系统已经实现了两个,一个是CommaTokenizer,以逗号为分割(包括先后有空格),另一个是Rfc822Tokenizer,用于email格式。如要自己实现,可以参考系统实现的两个例子。
mt.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
相关链接: 我的Android开发相关文章
TextView
例子1在XML中设置autoLink属性
例子2在代码中设置autoLink属性
EditText
AutoCompleteTextView
MultiAutoCompleteTextView
TextView
TextView之前已经使用过很多,直接显示,比较简单。但是我们可以同“autoLink”属性,使用户可以点击一个网络连接、电话号码、邮箱地址、地图地址,通过系统应用打开它们。除此之外,还有其他的font属性,minLines,maxLines等等,都很好理解,可以去阅读Android学习笔记系列。例子1:在XML中设置autoLink属性
我们在xml中设置<textview ... android:autoLink="email|web" />,可以设置的autoLink的有all,email,map,none(这是缺省值,表示不进行自动链接),phone,web。
例子2:在代码中设置autoLink属性
tv.setAutoLinkMask(Linkify.ALL);// 设置全部的自动链接tv.setAutoLinkMask(Linkify.PHONE_NUMBERS |Linkify.WEB_URLS); //设置web和phone
tv.setText(……); //需要注意,设置属性应该在setText()之前,否则该属性不能作用在已设置的text上
在某些情况下,例如只要求临时起作用,我们可能需要在设置text之后,才加上link属性,可用下面的方法。Linkify.addLinkes()还可用于Spannable控件。
tv.setText("My Phone : 87654321");
Linkify.addLinks(tv, Linkify.ALL); //需要注意,将Linkify.addLinkes()放置在setText()之前是不起作用的
EditText
EditText是TextView的子类。EditText没有互联网上的功能那么强,例如编辑博客可以输入图片,但是对于手机也提供丰富功能。具体可以看reference,这里介绍2个比较有趣的功能。hint。可以在EditText中用灰色字体显示提示,当用户点击输入时,该提示消失。在XML中,如下设定:
<EditText .... android:hint="@string/ui_text_et_hint"/>
EditText继承了TextView的一个重要属性是inputType。我们可以设置textAutoCorrect来检测拼写错误,可以通过textCapWords来自动设为每个单词的第一个字母为大写。还可以设置要求输入格式,例如textUri,textEmailAddress,textPassword等等。
<EditText .... android:inputType="textPersonName|textCapWords"/>
在老的版本中,很多属性都被移到inputType中设置,如果我们在xml中设置了inputType,这些过期的属性将会不起作用,例如android:capitalize。
新老版本中需要注意多行的问题,在老版本中,缺省是多行的,及当行不能全部显示,自动在下一行显示,如要单行显示则需要设置android:singleLine。但是当XML的属性设置了inputType,则缺省是单行的,如果要多行,则需设置android:inputType="textMultiLine"。
AutoCompleteTextView
自动完成的control例子如上。XML如下:
<TextView ...... />
<AutoCompleteTextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ui_text_auto"/>
代码如下:
AutoCompleteTextView actv = (AutoCompleteTextView)findViewById(R.id.ui_text_auto);
//创建一个一个adpater类,包含有建议项,和显示建议的control
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, //显示建议内容的control
new String[]{"Chinese","English","French","Greek"}); //建议项
//关联adapter
actv.setAdapter(aa);
MultiAutoCompleteTextView
AutoCompleteTextView匹配整个text view,有时,我们希望能像句子一样可以每个单词进行匹配,这种情况需要用到MultiAutoCompleteTextView。XML例子如下:
<MultiAutoCompleteTextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ui_text_auto_multi"/>
代码如下。同样要通过adapter设置建议项,以及显示建议项的control,并通过setAdapter()与该控件相关联。此外,还需要通过Tokenizer告诉系统什么时候重新进行匹配。
MultiAutoCompleteTextView mt =(MultiAutoCompleteTextView) findViewById(R.id.ui_text_auto_multi);
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line,
new String[]{"Chinese","English","French","Greek","Spainish"});
mt.setAdapter(aa);
//通过setTokenizer()告之以什么作为分割,什么时候开始进行匹配。通过实现MultiAutoCompleteTextView.Tokenizer接口,提供分割方式。系统已经实现了两个,一个是CommaTokenizer,以逗号为分割(包括先后有空格),另一个是Rfc822Tokenizer,用于email格式。如要自己实现,可以参考系统实现的两个例子。
mt.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
相关链接: 我的Android开发相关文章
相关文章推荐
- Android开发艺术探索读书笔记(第一章)
- adb 连接不上的问题
- android反编译相关
- Android-性能优化01-布局优化&绘制优化&内存泄露优化
- Android—图片上传压缩工具类
- Android里面主菜单里面设置菜单列表,单项选择,多项选择的实现
- Android布局之LinerLayout点滴
- Android前置摄像头预览并检测人脸,获取人脸区域亮度
- 【Android Studio快捷键】之导入相应包声明(import packages)
- android存储之preference和SQLite
- Android:ContentProvider 随记2
- Android学习笔记(21):ImageView及其子类
- Android中WIFI开发总结(一)
- android studio svn 更改依赖包名后 报错 Gradle Configuration with name 'default' not found
- Android中关于SQLite的操作
- Android:ContentProvider 随记
- Android Studio Git .gitignore文件简洁正确的写法
- android xmlns:tools用法
- android学习的几本书:深入理解Android内核设计思想
- Android 开源项目推荐