目录(?)[-]

  1. TextView
    1. 例子1在XML中设置autoLink属性
    2. 例子2在代码中设置autoLink属性
  2. EditText
  3. AutoCompleteTextView
  4. 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开发相关文章

【转】Pro Android学习笔记(十四):用户界面和控制(2):Text类控制的更多相关文章

  1. 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版

    目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖 ...

  2. 【转】 Pro Android学习笔记(四二):Fragment(7):切换效果

    目录(?)[-] 利用setTransition 利用setCustomAnimations 通过ObjectAnimator自定义动态效果 程序代码的编写 利用fragment transactio ...

  3. 【转】 Pro Android学习笔记(四八):ActionBar(1):Home图标区

    目录(?)[-] Home Icon 源代码 TextView的滚动 返回主activity或指定activity     ActionBar在Android 3.0 SDK中为平板引入,在4.0中也 ...

  4. 【转】 Pro Android学习笔记(四七):Dialog(4):一些补充和思考

    目录(?)[-] 编程思想封装接口 fragment和activity以其他fragment之间的通信 编程思想:封装接口 在小例子中,fragment会调用activity的onDialogDone ...

  5. 【转】 Pro Android学习笔记(四三):Fragment(8):再谈Transaction和管理器

    目录(?)[-] Transaction的一些操作 再谈FragmentManager 调用其他fragment的方法 唤起activity 唤起fragment和相互通信 一些其它 Transact ...

  6. 【转】Pro Android学习笔记(四):了解Android资源(下)

    处理任意的XML文件 自定义的xml文件放置在res/xml/下,可以通过R.xml.file_name来获取一个XMLResourceParser对象.下面是xml文件的例子: <rootna ...

  7. Java学习笔记十四:如何定义Java中的类以及使用对象的属性

    如何定义Java中的类以及使用对象的属性 一:类的重要性: 所有Java程序都以类class为组织单元: 二:什么是类: 类是模子,确定对象将会拥有的特征(属性)和行为(方法): 三:类的组成: 属性 ...

  8. 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

    目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...

  9. Pro Android学习笔记 ActionBar(1):Home图标区

     Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...

  10. 【转】 Pro Android学习笔记(五六):配置变化

    目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...

随机推荐

  1. 3.写一个hello world页面

    经过1和2的学习,现在已经可以正常启动Django了,这一节说怎么写一个hello world页面,所有的环境基础就是1和2中搭建的 1.在app模块中添加页面 具体为 hello_django\he ...

  2. SSH 占用数据库连接不释放问题

    SSH框架的项目在訪问数据库的时候.訪问完毕后一直占用链接,不释放.导致过了一段时间后,server没挂,就是有訪问数据库的连接是时候.一直卡住 解决的方法:   1.配置spring相应的hiber ...

  3. WORD表格数据运算技巧

    我们经常会用WORD制作表格,有时表内的数据要运算的,WORD表格数据运算能力无法与EXCEL相比.但常见的乘除加减.相邻数据累加,将金额数字自动转成大写,WORD都能在表格内自动完成.下面以一个简单 ...

  4. Kattis - triangle 【数学】

    题意 求第N个迭代三角形 中 所有黑色三角形的周长的整数部分的位数 思路 该三角形的周长是 3^(n + 1)/ 2 ^ (n) 然后 可以用 long double 存下来 再求位数 就可以 AC ...

  5. PHP 邮件发送类

    mail.php <?php /** * 邮件发送类 * 支持发送纯文本邮件和HTML格式的邮件,可以多收件人,多抄送,多秘密抄送,带附件的邮件 * 需要的php扩展,sockets和Filei ...

  6. 20145239 GDB调试汇编堆栈过程分析

    20145239 GDB调试汇编堆栈过程分析 测试源代码 #include<stdio.h> ; ; ; static int g(int x) { return x + addend1; ...

  7. 20145229吴姗珊 《Java程序设计》第7周学习总结

    20145229吴姗珊 <Java程序设计>第7周学习总结 教材学习内容总结 第13章时间与日期 即使标注为GMT(格林威治时间),实际上谈到的的是UTC(Unix时间)时间. 秒的单位定 ...

  8. hbase shell-ddl(表定义指令)

    hbase表定义指令详细解说篇 1. alter, alter_async, alter_status 2. create 3. describe (可以简写成'desc')  显示某张表的结构情况 ...

  9. apache下配置多域名多目录的应用

    引言:阿里云centos apache web服务器中配置不同域名访问不同的目录,达到类似增加虚拟主机的效果: 案例: 如有2个www.a.com ,www.b.com 域名, 访问www.a.com ...

  10. 【Linux不需要磁盘碎片整理的真正原因是因为Linux只是一个内核,它没有磁盘可以整理】

    [Linux不需要磁盘碎片整理的真正原因是因为Linux只是一个内核,它没有磁盘可以整理]