【转】Pro Android学习笔记(十四):用户界面和控制(2):Text类控制
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开发相关文章
【转】Pro Android学习笔记(十四):用户界面和控制(2):Text类控制的更多相关文章
- 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版
目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖 ...
- 【转】 Pro Android学习笔记(四二):Fragment(7):切换效果
目录(?)[-] 利用setTransition 利用setCustomAnimations 通过ObjectAnimator自定义动态效果 程序代码的编写 利用fragment transactio ...
- 【转】 Pro Android学习笔记(四八):ActionBar(1):Home图标区
目录(?)[-] Home Icon 源代码 TextView的滚动 返回主activity或指定activity ActionBar在Android 3.0 SDK中为平板引入,在4.0中也 ...
- 【转】 Pro Android学习笔记(四七):Dialog(4):一些补充和思考
目录(?)[-] 编程思想封装接口 fragment和activity以其他fragment之间的通信 编程思想:封装接口 在小例子中,fragment会调用activity的onDialogDone ...
- 【转】 Pro Android学习笔记(四三):Fragment(8):再谈Transaction和管理器
目录(?)[-] Transaction的一些操作 再谈FragmentManager 调用其他fragment的方法 唤起activity 唤起fragment和相互通信 一些其它 Transact ...
- 【转】Pro Android学习笔记(四):了解Android资源(下)
处理任意的XML文件 自定义的xml文件放置在res/xml/下,可以通过R.xml.file_name来获取一个XMLResourceParser对象.下面是xml文件的例子: <rootna ...
- Java学习笔记十四:如何定义Java中的类以及使用对象的属性
如何定义Java中的类以及使用对象的属性 一:类的重要性: 所有Java程序都以类class为组织单元: 二:什么是类: 类是模子,确定对象将会拥有的特征(属性)和行为(方法): 三:类的组成: 属性 ...
- 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge
目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...
- Pro Android学习笔记 ActionBar(1):Home图标区
Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...
- 【转】 Pro Android学习笔记(五六):配置变化
目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...
随机推荐
- python网络爬虫之scrapy 调试以及爬取网页
Shell调试: 进入项目所在目录,scrapy shell “网址” 如下例中的: scrapy shell http://www.w3school.com.cn/xml/xml_syntax.as ...
- python3保存一个网页
import requests res = requests.get("http://www.baidu.com") savefile = open("baidu.htm ...
- putty screen
http://www.cnblogs.com/xupeizhi/archive/2013/05/20/3088779.html screen 会创建一个跑着shell的单一窗口 Ctrl+a d退出刚 ...
- JS中如何获取<Select>中value和text的值
原文地址:JS中如何获取<Select>中value和text的值 html代码: <select id = "city" onchange="chan ...
- spring-boot2
1.Spring Boot 1.1.什么是Spring Boot Java是静态语言,先变异后运行都是静态语言,不编译直接运行是动态语言(js是动态语言不需要编译,因为浏览器可以直接解析).Java笨 ...
- mysql高可用研究(二) 主从+MHA+Atlas
关于Atlas的详细介绍请访问:https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md 为什么要使用Atlas?应用程序直连数据库不好吗? ...
- day3--集合、文件操作、字符编码与转换、函数(递归,lambda,filter,map)、字典排序
list1 = set([1, 2, 3, 4, 5, 6, 5, 5, 5])list2 = set([11, 2, 36, 'a', 5, 6, 5, 5, 5])list3 = set([1, ...
- Spring Cloud之整合ZK作为注册中心
Eureka已经闭源了,用zk可以替代之 Eureka 作为注册中心 Dubbo也是zk作为注册中心的 Zookeeper简介 Zookeeper是一个分布式协调工具,可以实现服务注册与发现.注册中心 ...
- Linux学习之CentOS(一)--CentOS6.6下Mysql数据库的安装与配置
在这里我是通过yum来进行mysql数据库的安装的,通过这种方式进行安装,可以将跟mysql相关的一些服务.jar包都给我们安装好,所以省去了很多不必要的麻烦!!! [root@larry ~]# c ...
- neutron qos Quality of Service
Quality of Service advanced service is designed as a service plugin. The service is decoupled from t ...