目录(?)[-]

  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. php的json_encode不兼容JSON_UNESCAPED_UNICODE

    //php的json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案 function _json_encode($value) { if (version_compare( ...

  2. Python菜鸟之路:JQuery基础

    前言 JQuery可以理解为是一个模块,里边封装了DOM以及JavaScript,可以方便的对JQuery对象进行操作. 版本 尽量选择1.X系统的Jquery版本,例如1.12.jquery.js. ...

  3. 蓝屏代码stop:0X000000EA(0X85E286B8,0X8635F210,0XF7A53CBC,0X00000001)

    你这是显卡驱动问题,我把蓝屏代码都给你,以后在出现蓝屏自己看看行了. 1.0x0000000A:IRQL_NOT_LESS_OR_EQUAL ◆错误分析:主要是由问题的驱动程序.有缺陷或不兼容的硬件与 ...

  4. Springmvc注解启用

      http://www.blogbus.com/wanping-logs/235898637.html 使用注解的原因 最方便的还是启用注解 注解方便,而且项目中很流行. 配置文件尽量减少,主要使用 ...

  5. UDP标准模型

    伪代码 #服务端 #创建UDP服务器 ss = socket() #创建一个服务器套接字 ss.bind() #绑定服务器套接字 inf_loop: #服务器无限循环 cs = ss.recvfrom ...

  6. easy_install和pip的安装及使用

    在终端输入命令报错后,在网上找到了这篇博客,用easy_install命令安装pip,问题解决 Fatal error in launcher: Unable to create process us ...

  7. Visual Studio 2017 扩展推荐

    ReSharper : 首先的是Resharper,这个基本是目前是我开发过程中必备的工具集,唯一的缺点就是吃内存,所以你的内存要是低于8G,就不要使用它了.它的特点可以快速重构.高亮显示错误.导航和 ...

  8. 使用 Apache poi 导入Excel

    本文主要记录Excel导入及模板下载,遇到的问题及注意事项. 第一节:Excel导入   1.如何获取Excel中的最大行,也就是最后一行? 2.如何获取有效行?有效行的定义是每一行记录中每一列中值都 ...

  9. JavaScript的undefined与null、NaN的区别

    Javascript的数据类型 在JavaScript中,有三种住数据类型.两种复合数据类型和两种特殊数据类型. 1.主数据类型(基元数据类型) 字符串 String数据类型: 字符串值是一个由零个或 ...

  10. Spring Cloud之网关搭建

    统一由网关进行拦截判断 要不放到每个服务里面就很不合适了 冗余 主要的: <dependency> <groupId>org.springframework.cloud< ...