Android 自学之基本界面组件(上)
文本款(TextView)和编辑框(EditText)的功能和用法
TextView直接继承了View,他还是EditText、Button两个UI组件的父类,TextView的作用就是在界面上显示文字(相当于Java中AWT中标签[JLabel],但有比他强大些)。
TextView类及其子类的类图如图所示:
TextView的XML属性及相关方法和说明:
XML属性 | 相关方法 | 说明 |
android:autoLink | setAutoLinkMask(int) | 是否符合指定格式的文本转换为可单击的超链接形式 |
android:cursorVisible | setCursorVisible(boolean) | 设置该文本框的光标是否可见 |
android:drawableBottom |
setCompounDrawablesWithIntrinsicBounds (Drawable,Drawable,Drawable,Drawable) |
在文本框内文本的底端绘制指定图像 |
android:drawableLeft |
setCompounDrawablesWithIntrinsicBounds (Drawable,Drawable,Drawable,Drawable) |
在文本框内文本的左边绘制指定图像 |
android:drawablePadding |
setCompounDrawablesWithIntrinsicBounds (Drawable,Drawable,Drawable,Drawable) |
设置文本框内文本与图形之间的间距 |
android:drawableRight |
setCompounDrawablesWithIntrinsicBounds (Drawable,Drawable,Drawable,Drawable) |
在文本框内文本的右边绘制指定图像 |
android:drawableTop |
setCompounDrawablesWithIntrinsicBounds (Drawable,Drawable,Drawable,Drawable) |
在文本框内文本的顶端绘制指定图像 |
android:editable | 设置该文本是否允许编辑 | |
android:ellipsize | 设置当显示的文本超过TextView的长度是如何处理文本内容 | |
android:gracity | setGravity(int) | 设置文本框内文本的对齐方式 |
android:height | setHeight(int) | 设置该文本框的高度(以pixel为单位) |
android:hint | setHint(int) | 设置当该文本框内容为空时,文本框内默认显示的提示文本 |
android:minHeight | setMinHeight(int) | 设置该文本框的最小高度(以pixel为单位) |
android:maxHeight | setMaxHeight(int) | 设置该文本框的最大高度(以pixel为单位) |
android:minWidth | setMinWidth(int) | 设置该文本框的最小宽度(以pixel为单位) |
android:maxWidth | setMaxWidth(int) | 设置该文本框的最大宽度(以pixel为单位) |
android:lines | setLines(int) | 设置该文本框默认占几行 |
android:MiLines | setMiLines(int) | 设置该文本框最少占几行 |
android:MaxLines | setMaxLines(int) | 设置该文本框最多占几行 |
android:password | setTransformationMethod(TransfirmationMethod) | 设置该文本框是一个密码框(以点代替字符) |
android:phoneNumber | setKevListener(KeyListener) | 设置该文本框只能接受电话号码 |
android:scrollHorizontally | setHorizontallyScorlling(boolean) | 设置当该文本框不够显示全部内容时是否允许水平滚动 |
android:selectAllOnFocus | setSelectAllOnFocus(boolean) | 如果文本框的内容可选择,设置当它获得焦点时是否自动选中所有文本 |
android:singleLine | setTransformationMethod | 设置该文本框是否为单行模式。如果设为true,文本框不会换行 |
android:shadowColor | setShadowLayer(float,float,float,int) | 设置文本框内文本的阴影的颜色 |
android:shadowDx | setShadowLayer(float,float,float,int) | 设置文本框内文本的阴影在水平方向的偏移 |
android:shadowDy | setShadowLayer(float,float,float,int) | 设置文本框内文本的阴影在垂直方向的偏移 |
android:shadowRadius | setShadowLayer(float,float,float,int) | 设置文本框内文本的阴影的角度 |
android:text | setText(CharSequence) | 设置文本框内文本的内容 |
android:textColor | setTextColor(ColorStateList) | 设置该文本框内文本的颜色 |
android:tetColorHighlight | setHighlightColor(int) | 设置该文本框内文本被选中时的颜色 |
android:textScaleX | setTextScaleX(float) | 设置该文本框内文本水平方向上的缩放因子 |
android:textSize | setTextSize(float) | 设置该文本框内文本的字体大小 |
android:textStyle | setTypeface(Typeface) | 设置该文本框内文本的字体风格,如粗体,斜体 |
android:typeface | setTypeface(Typeface) | 设置该文本框内文本的字体 |
android:width | setWidth(int) | 设置该文本框的宽度 |
上表中android:autoLink属性值是如下几个属性值的一个或几个,多个属性值之间用竖线隔开:
- none:不设置任何超链接
- web(对应于Linkify.WEB_URLS):将文本中的URL地址转换为超链接
- email(对应于Linkify.EMAIL_ADDRESSES):将文本中的E-mail地址转换为超链接
- phone(对应于Linkify.PHONE_NUMBERS):将文本中的电话号码转换为超练接
- map(对应于Linkify.MAP_ADDRESSES):将文本中的接到地址转换为超链接
- all:相当于指定weblemaillphonelmap
上表中android:ellipsize属性可支持如下几个属性值。
- none:不进行任何处理
- start:在文本开头部分进行省略
- middle:在文本中间部分进行省略
- end:在文本结尾出进行省略
- marquee:在文本结尾出以淡出的方式省略
下面我们用例子来例举上表中的一些属性:不同字体、不同颜色的文本、URL
layout/main.xml
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent"> 6 7 <!-- 设置字体为20pt --> 8 <TextView 9 android:layout_width="fill_parent" 10 android:layout_height="wrap_content" 11 android:text="我爱Java" 12 android:textSize="20pt" 13 /> 14 <!-- 设置中间省略 --> 15 <TextView 16 android:layout_width="fill_parent" 17 android:layout_height="wrap_content" 18 android:singleLine="true" 19 android:text="我爱Java我爱Java我爱Java我爱Java我爱Java我aaaJava" 20 android:ellipsize="middle" 21 /> 22 <!-- 对邮件增加链接 --> 23 <TextView 24 android:layout_width="fill_parent" 25 android:layout_height="wrap_content" 26 android:singleLine="true" 27 android:text="测试kongyeeku@163.com内容" 28 android:autoLink="email" 29 /> 30 <!-- 设置文字颜色 、大小,并使用阴影 --> 31 <TextView 32 android:layout_width="fill_parent" 33 android:layout_height="wrap_content" 34 android:text="测试文字" 35 android:shadowColor="#0000ff" 36 android:shadowDx="15.0" 37 android:shadowDy="20.0" 38 android:shadowRadius="45.0" 39 android:textColor="#ff0000" 40 android:textSize="25pt" 41 /> 42 <!-- 测试密码框 --> 43 <TextView android:id="@+id/passwd" 44 android:layout_width="fill_parent" 45 android:layout_height="wrap_content" 46 android:text="@string/hello" 47 android:password="true" 48 /> 49 50 </LinearLayout>
所展现的效果图如下:
范例:带边框、图片的TextView
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent"> 6 7 <!-- 通过android:background指定背景 --> 8 <TextView 9 android:layout_width="fill_parent" 10 android:layout_height="wrap_content" 11 android:text="带边框的文本" 12 android:background="@drawable/bg_border" 13 android:textColor="@color/abc_search_url_text_holo" 14 /> 15 16 <!-- 通过android:drawableLeft绘制一张图片 --> 17 <TextView 18 android:layout_width="fill_parent" 19 android:layout_height="wrap_content" 20 android:text="带图片的文本" 21 android:drawableLeft="@drawable/ic_launcher" 22 /> 23 24 </LinearLayout>
效果图:
范例:一个注册界面
1 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent"> 6 <TableRow> 7 <TextView 8 android:layout_width="fill_parent" 9 android:layout_height="wrap_content" 10 android:text="用户名:" 11 android:textSize="10sp" 12 android:background="@drawable/bg_border" 13 /> 14 <EditText 15 android:layout_width="fill_parent" 16 android:layout_height="wrap_content" 17 android:hint="请填写登录帐号" 18 android:selectAllOnFocus="true" 19 /> 20 </TableRow> 21 <TableRow> 22 <TextView 23 android:layout_width="fill_parent" 24 android:layout_height="wrap_content" 25 android:text="密码:" 26 android:textSize="10pt" 27 android:background="@drawable/bg_border" 28 /> 29 <EditText 30 android:layout_width="fill_parent" 31 android:layout_height="wrap_content" 32 android:password="true" 33 /> 34 </TableRow> 35 <TableRow> 36 <TextView 37 android:layout_width="fill_parent" 38 android:layout_height="wrap_content" 39 android:text="电话号码:" 40 android:textSize="10pt" 41 android:background="@drawable/bg_border" 42 /> 43 <EditText 44 android:layout_width="fill_parent" 45 android:layout_height="wrap_content" 46 android:hint="请填写您的电话号码" 47 android:selectAllOnFocus="true" 48 android:phoneNumber="true" 49 /> 50 </TableRow> 51 <Button 52 android:layout_width="wrap_content" 53 android:layout_height="wrap_content" 54 android:text="注册" 55 /> 56 57 58 </TableLayout>
上面代码里面的TextView是设置了背景图片的,所以在展示的效果图上你们呢会看到三个黑的框框,为什么三个框框的会有一个比另外两个小,那是因为我设置的宽度单位不一样(用户名的宽度是sp,其他的是用的pt);所展示的效果,效果图如下: