android学习笔记(15)文本框(TextView)与编辑框(EditText)的功能和用法

2014-12-9 17:32:29     27 人阅读    

文本框(TextView)与编辑框(EditText)的功能和用法
         TextView直接继承了 View,它还是EditText、Button两个UI组件类的父类。TextView 的作用就是在界面上显示文本——从这个意义上来看,它有点类似于Swing编程中的JLabel, 不过它比JLabel功能更强大。


          从功能上来看,TextView其实就是一个文本编辑器,只是Android关闭了它的文字编辑功能。如果开发者想要定义一个可以编辑内容的文本框,则可以使用它的子类:EditText, EditText允许用户编辑文本框中的内容。


           不仅如此,TextView还派生出了 Button类TextView和EditText具有很多相似之处,它们之间的最大区别在于TextView不允许用户 编辑文本内容,而EditText则允许用户编辑文本内容。


          TextView提供了大量的XML属性,这些XML属性大部分既可适用于TextView,又可适用 于EditText,但有少量XML只能适用于其中之一。表2.10显示了 TextView支持的XML属性及 相关方法的说明。

续表

XML属性性

相关方法

android: textColor

setTextColor(ColorStatcList)

设置文本框内文本的颜色

android :textColorHighlight

setHighlightColor(int)

设置文本框内文本被选中时的颜色

android: textScaleX

setTextScaleX(float)

设置文本框内文本在水平方向上的缩放W

android:textSize

setTextSize(float)

设置文本框内文本的字体大小

android:textStyle

setTypeface(Typeface)

设置文本框内文本的7•体风格,如机体、斜体等

android: typeface

setTypeface(Typeface)

设置文本框内文本的字休

android:width

setWidth(int)

设置该文本框的宽度(以pixel为中位〉

 

 


表2.10中android:autoLink属性值是如下几个属性值的一个或几个,多个属性值之间用 竖线隔开。
none:不设置任何超链接。
web (对应于Linkify.WEB_URLS):将文本中的URL地址转换为超链接。
email (对应于Unkify.EMAIL—ADDRESSES):将文本中的E-mail地址转换为超链接。
phone (对应于Linkify.PHONE_NUMBERS):将文本中的电话号码转换为超链接。
map (对应于Linkify.MAP_ADDRESSES):将文本中的街道地址转换为超链接。
all:相当于指定 weblemaillphonelmap。
表2.10中android:ellipsize属性可支持如下几个属性值。
none:不进行任何处理。
start:在文本开头部分进行省略。
middle:在文本中间部分进行省略。
end:在文本结尾处进行省略。
marquee:在文本结尾处以淡出的方式省略。
下面通过系列实例来介绍TextView用法。
实例:不同字体、不同颜色的文本、URL
由于TextView提供了大景XML属性,因此我们可以通过这些XML属性来控制TextView中文本的行为,例如如下界面布局文件。
程序清单:codes\02\2.3\TextViewTest\layout\res\main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
 <!-- 设置字体为20pt  -->
 <TextView
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
 android:text="我爱Java"
 android:textSize="20pt"
 />
 <!-- 设置中间省略 -->
 <TextView
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content"
 android:singleLine="true" 
 android:text="我爱Java我爱Java我爱Java我爱Java我爱Java我aaaJava"
 android:ellipsize="middle"
 />
 <!-- 对邮件增加链接 -->
 <TextView
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content"
 android:singleLine="true" 
 android:text="测试kongyeeku@163.com内容"
 android:autoLink="email"
 />
 <!-- 设置文字颜色 、大小,并使用阴影 -->
 <TextView
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
 android:text="测试文字"
 android:shadowColor="#0000ff"
 android:shadowDx="15.0"
 android:shadowDy="20.0"
 android:shadowRadius="45.0"
 android:textColor="#ff0000"
 android:textSize="25pt"
 />
 <!-- 测试密码框 -->
 <TextView android:id="@+id/passwd"
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
 android:text="@string/hello"
 android:password="true"
 />
</LinearLayout>

上面的界面布局文件中定义了 5个TextView,它们指定的规则如下:
第一个 TextView 指定 android:textSize="20pt",这就指定了字号为 20pt。
第二个TextView指定android:ellipsize="middle",这就指定了当文本多于文本框的宽度时,从中间省略文本。
第三个 TextView 指定 android:autoLink="email",这就指定了该文本框会自动为文本框内的E-mail地址 添加超链接。
第四个 TextView 指定系列 android:shadowXXX 属性,这就为该文本框内的文本内容添加了阴影。
最后一个 TextView 指定 android:password=Mtrue",这就指定了该文本框会用点来代替显示所有字符。

默认情况下,TextView是不带边框的,如果想为TextView添加边框,只能通过“曲线救国”的方式来实现——我们可以考虑为TextView设置一个背景,这个背景只是一个边框, 这样就实现了带边框的TextView。
至于想实现带图片的TextView就更简单了,因为TextView本身就有android:drawable XXX 属性,该属性可以在文本框指定位置绘制一个Drawable对象——这样就可在TextView的指 定位置绘制一张图片。
下面的界面布局文件中定义了两个TextView,界面布局文件的代码如下。
程序清单:main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
<!-- 通过android:background指定背景 -->
<TextView
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
 android:text="带边框的文本"
 android:background="@drawable/bg_border"
 />
<!-- 通过android:drawableLeft绘制一张图片 --> 
<TextView  
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
 android:text="带图片的文本"
 android:drawableLeft="@drawable/icon"
 /> 
</LinearLayout>

上面的界面布局文件中定义了两个TextView,其中第一个指定了背景,第二个指定在文 本框左边绘制一张图片。第一个文本框所指定的背景也是由XML文件定义的,将该文件放在 drawable_mdpi文件夹内,该XML文件也可当成Drawable使用。下面是该XML文件的代码: 程序清单:\res\drawable-mdpi\bg_border.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
 <solid android:color="#000000"/>
 <stroke android:width="2dip" android:color="#ff0000" />
</shape>

实例:用户友好的输入界面
对于一个用户友好的输入界面而言,接受用户输入的文本框内默认会提示用户如何输 入;当用户把焦点切换到输入框时,输入框自动选中其中已输入的内容,避免用户删除己有 内容;当用户把焦点切换到只接受电话号码的输入框时,输入法自动切换到数字键盘。 下面程序的输入界面完成了上面的功能,输入界面的界面布局如下。
程序清单:codes\02\2.3\InputUI\res\layout\main.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
<TableRow>
<TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="用户名:"
 android:textSize="10sp"
 android:background="@drawable/bg_border"
 /> 
<EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:hint="请填写登录帐号"
 android:selectAllOnFocus="true"
 />
</TableRow>
<TableRow>
<TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="密码:"
 android:textSize="10pt" 
 android:background="@drawable/bg_border"
 /> 
<EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:password="true"
 />
</TableRow>
<TableRow>
<TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="电话号码:"
 android:textSize="10pt" 
 android:background="@drawable/bg_border"
 /> 
<EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:hint="请填写您的电话号码"
 android:selectAllOnFocus="true"
 android:phoneNumber="true"
 />
</TableRow>
<Button 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="注册"
 />
</TableLayout>

上面的界面布局中第一个文本框通过androidihint指定了文本框的提示信息:请填写登录 账号——这是该文本框默认的提示。当用户还没有输入时,该文本框内默认显示这段信息。 第二个输入框通过android:password=Mtrue”设置这是一个密码框,用户在该文本框输入的字符 会以点号代替。第三个输入框通过android:phoneNumber="tme"设置为一个电话号码输入框。
当用户把焦点定位到电话号码输入框时,系统自动显示数字输入键 盘,这就是设置android:phoneNumber=ntrue"的作用;第一个编辑框默认显示了 “请填写登录 账号”,这是由android:hint属性指定的。


原文地址:http://www.itmmd.com/201412/287.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android学习笔记(16)按钮(Button )与固片按钮(ImageButton )組件的功能和用法   上一篇
下一篇  linux命令详解(17)文件系统遍历 cd、pwd、ls命令详解

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!