概叙
在配置好环境,准备好工具就开始我们的开发之旅,本篇我们来学习TextView控件的用法,及其在XML中的属性;
首先我们还是先看看API文档提供的继承关系如图:
一、属性介绍
extView的属性有很多,但是在项目中常用到的就那么几个,不用刻意的记忆,多用用就记住了。
1. 在XML中写一个简单的TextView:
<span style="font-size:14px;"><TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:textColor="#07941a"
android:textSize="18sp"
android:text="这是一个简单的TextView" /></span>
其中有三个属性:android:padding 表示文本和控件的内边距,还有paddingLeft,paddingRight....
android:text 设置显示文本
android:textColor 设置文本颜色
android:textSize 设置文字大小,度量单位”sp”
运行一下就是普通的TextView
2. 接下来看看其他效果;
代码如下:
<span style="font-size:14px;"><TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@mipmap/zem32"
android:gravity="center_vertical"
android:padding="5dp"
android:textColor="#192cbf"
android:textSize="18sp"
android:textStyle="bold|italic"
android:text="这是一个带表情的TextView" /></span>
在这段代码中我们添加了这几个属性:android:drawableBottom 在text的下方显示图片
android:drawableLeft 在text的左边显示图片
android:drawableRight 在text的右边显示图片
android:drawableTop 在text的正上方显示图片
android:gravity 设置文本位置,如设置成“center”,文本将居中显示;center_vertical表示垂直居中
android:textStyle 设置字体,设置bold(粗体),italic(斜体);可以设置一个或多个,用“|”隔开
3. 还有可以给文本设置链接:
代码如下:
<span style="font-size:14px;"><TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="5dp"
android:textAppearance="?attr/textAppearanceSearchResultTitle"
android:autoLink="all"
android:textColorLink="#07941a"
android:textColorHighlight="#FFA70621"
android:text="http://my.csdn.net/" /></span>
其中有四个属性:
android:autoLink 设置文本显示为可点击的链接。可选值有--none/web/email/phone/map,all包含了所有类型;android:textColorHighlight 被选中文字的底色,默认为蓝色
android:textColorLink 文字链接的颜色.
android:textAppearance 设置文字外观。如“?android:attr/textAppearanceLargeInverse ”这里引用的是系统自带的一个外观,
? 表示系统是否有这种外观,否则使用默认的外观。
4. 还有像我们生活中见到广告牌的跑马灯效果:
代码如下:
<span style="font-size:14px;"><TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:textAppearance="?attr/textAppearanceSearchResultTitle"
android:textColor="#FFA70621"
android:textStyle="bold"
android:text="Happiness is a way station between too much and too little." /></span>
属性介绍:android:ellipsize 设置当文字过长时控件该如何显示,”start”-省略号显示在开头;”end”-省略号显示在结尾;”middle”-省略号显示在中间; ”marquee”-以跑马灯的方式显示
android:singleLine 设置单行显示,有两个值true和false
android:focusable 控件能否获取焦点
android:focusableInTouchMode 是否在触摸模式获取焦点
android:marqueeRepeatLimit="marquee_forever" 表示无限循环次
这都是系统自带的属性样式,下面我们设计自己的TextView
二、自定义TextView样式
首先我们在drawable文件夹中新建一个shape标签的XML文件,写入以下内容:
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:color="#000000" android:width="4dp"></stroke>
</shape></span>
然后在TextView属性中添加属性,引用我们的文件<span style="font-size:14px;">android:background="@drawable/shape_rim"</span>
运行的效果:我们通过stroke 标签是添加了一个边框,设置了颜色,宽度。感觉好丑啊,那我们来试试一个渐变的效果
代码如下:
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--设置边框-->
<stroke android:color="#000000" android:width="2dp"></stroke>
<!--添加一个渐变色-->
<gradient
android:startColor="#FF1BD118" //开始颜色
android:centerColor="#9a18d1" //中间颜色
android:endColor="#d7092c" //结束颜色
android:angle="45"></gradient> //旋转角度,必须是45的倍数
<!--设置圆角-->
<corners
android:topLeftRadius="5dp" //左上角
android:topRightRadius="5dp" //右上角
android:bottomRightRadius="5dp" //右下角
android:bottomLeftRadius="5dp"></corners> //左下角
</shape></span>
如果你四个圆角的度数是一样的可以一行代码搞定:
<span style="font-size:14px;"><corners android:radius="5dp" /></span>
最后别忘了在在TextView属性中添加属性,引用文件
<span style="font-size:14px;">android:background="@drawable/shape_shade"</span>
三、如果我们要标记文本中的某一段文字会怎么做呢?在android中有一种方法可以通过HTML标签来实现
比如我们在代码中可以这样:
<span style="font-size:14px;">/**改变文本部分字体颜色*/
txt1.setText(Html.fromHtml("理想是指路明灯:<font color=BLUE>没有理想,就没有坚定的方向,而没有方向,就没有生活。</font>\n—— 托尔斯泰"));
/**片段文本部分字体颜色*/
String str = "人生像攀登一座山,而找寻出路,却是一种学习的过程,我们应当在这过程中,学习稳定、冷静,学习如何从慌乱中找到生机\n——席慕蓉";
SpannableStringBuilder style = new SpannableStringBuilder(str);
style.setSpan(new ForegroundColorSpan(Color.GREEN),0,8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(new ForegroundColorSpan(Color.BLUE),8,24, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(new ForegroundColorSpan(Color.LTGRAY),24,56, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
txt2.setText(style);</span>
这样就达到了我们的效果:
关于TextView就先这些,至于shape标签会在后叙中讲到,最后再看看TextView的其他属性:
android:maxEms 设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。
android:minEms 设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。
android:maxLength 限制显示的文本长度,超出部分不显示。
android:lines 设置文本的行数,设置两行就显示两行,即使第二行没有数据。
android:maxLines 设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。
android:minLines 设置文本的最小行数,与lines类似。
android:linksClickable 设置链接是否点击连接,即使设置了autoLink。
android:lineSpacingExtra 设置行间距。
android:lineSpacingMultiplier 设置行间距的倍数。如”1.2”
android:shadowColor 指定文本阴影的颜色,需要与shadowRadius一起使用。效果:
android:shadowDx 设置阴影横向坐标开始位置。
android:shadowDy 设置阴影纵向坐标开始位置。
android:shadowRadius 设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。
android:maxHeight 设置文本区域的最大高度
android:minHeight 设置文本区域的最小高度
android:maxWidth 设置文本区域的最大宽度
android:minWidth 设置文本区域的最小宽度