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="测试[email protected]内容"
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);所展示的效果,效果图如下:

时间: 2025-01-11 18:47:11

Android 自学之基本界面组件(上)的相关文章

Android 自学之基本界面组件(下)

按钮(Button)与图片按钮(ImageButton)组件的功能和用法 Button继承了TextView,ImageButton继承了Button.不管是Button还是ImageButton,他们的功能都很单一,主要是在UI界面生成一个按钮,该按钮可以供用户单击,当用户单击按钮后出发一个Onclick事件. Button  和  ImageButton的不同在于Button生成的按钮显示文字,ImageButton生成的按钮显示图片.(关于ImageButton属性android:text

Android中如何区分界面组件创建和销毁的类型

本文主要描述: 1.分辨系统杀掉退出还是用户主动退出2.分辨全新的创建还是系统恢复性的创建 1.分辨系统杀掉退出还是用户主动退出 当一个组件失去焦点后,系统有可能为了释放资源而杀掉这个组件,这个时候系统会调用到onSaveInstanceState方法用来通知保存一些状态数据.而如果用户是按下了back键或者在代码的某个地方 执行了context.finish()而导致组件退出,则不会走到onSaveInstanceState方法. 所以可以根据是否走到了onSaveInstanceState方

第84课 多线程与界面组件的通信(上)

1. 有趣的问题: [编程实验]是否可以在子线程中创建界面组件 //TestThread.h #ifndef TESTTHREAD_H #define TESTTHREAD_H #include <QThread> class TestThread : public QThread { Q_OBJECT protected: void run(); public: explicit TestThread(QObject* parent = 0); }; #endif // TESTTHREAD

Android 自学之拖动条SeekBar

拖动条(SeekBar)和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块的位置来标识数值----而且拖动条允许用户拖动滑动块来改变值,因此拖动条通常用于对系统的某种数值进行调节,比如音量调节. SeekBar允许用户改变拖动条的滑块外观,改变滑块外观通过如下属性来指定 android:thumb  指定一个Drawable对象,该对象将作为自定义滑块. 为了让程序能响应拖动条滑块位置的改变,程序可以考虑为他绑定一个OnSeekBarChangerListener监

Android 自学之帧布局 FrameLayout

帧布局(FrameLayout)直接继承了ViewGroup组件: 帧布局容器为每一个加入其中的组件都创建了一个空白的区域,这个区域我们称之为一帧,所有每个组件都占据一帧,这些都会根据gravity属性执行自动对齐. FrameLayout的常用XML属性及相关的方法: XML属性 相关方法 说明 android:foreground setForeground(Drawable) 设置该帧布局容器的前景图像 android:foregroundGravity setForegroundGrav

Android 自学之选项卡TabHost

选项卡(TabHost)是一种非常实用的组件,TabHost可以很方便地在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组建摆放区域.通过这种方式,就可以在一个容器中放置更多组件,例如许多手机系统会在同一个窗口第一多个标签页:来显示通话记录,包括“未接来电”,“已接来电”,“呼出电话”等. TabHost仅仅是一个简单的容器,他提供了如下两个方法来创建选项卡.添加选项卡. newTabSpec(String tag) : 创建选项卡 addTab(TabHost.TabSp

Android 自学之网格试图(GridView)和图片切换器(ImageSwitcher)功能和用法

网格试图(GridView)用于在界面上按行,列分布的方式来显示多个组件. GridView和ListView有共同的父类:AbsListView,因此GridView和ListView具有一定的相似性.GridView和ListView的主要区别在于:ListView只是一个方向上的分布:而GridView则会在两个方向上分布. 与ListView相似的是,GridView也需要通过Adapter来提供显示数据:可以通过SimpleAdapter来为GridView提供数据,也可以通过开发Ba

Android 自学之画廊视图(Gallery)功能和用法

Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显示的是一个水平的列表框.Gallery与Spinner有一个区别:Spinner的作用是供用户选择,而Gallery则允许用户通过拖动来查看上一个.下一个列表项. Gallery常用的XML属性及相关方法 XML属性 相关方法 说明 android:animationDuration setAnim

Android自学(一) 环境搭建

对移动开发兴趣已久,苦于没有太多时间静下心学习,最近刚好有了时间,准备学习下Android(为什么不学ios呢..因为买不起mac啊..) 闲话少说,刚好手头有台闲置的ThinkPad E145,64位ubuntu,便拿来搭建ubuntu下android环境.在网上搜了几个很详细的环境搭建流程,但是实际中还是碰到了好多问题,下面也写下自己的搭建流程. 1.JDK ubuntu有自带的openJDK(终端敲 java -version可以看到),不过还是要下一个更完整的JDK.下载流程不再细说,下