这篇博文献给正在android学习路上的弟弟,希望有一天以下内容对你有所帮助。
了解一个类,首先要了解他的结构,尤其是API中的这种类。
先了解下TextView的结构:
↳ | ||
| ↳ | android.widget.TextView |
Known Direct Subclasses(已知的直接子类) Button,CheckedTextView,Chronometer,DigitalClock,EditText,TextClock |
Known Indirect Subclasses(已知的间接子类) AutoCompleteTextView,CheckBox,CompoundButton,ExtractEditText,MultiAutoCompleteTextView, |
由类结构可以看出来,TextView(以下简称tv,ps:不要学习我的懒!)是直接继承自View,而大部分带有文字的组件都是他的子类,由此可见tv在整系统设计中的重要性。由此有个学习的小技巧,每一个组件的属性有好多,不可能做到所有组件属性都能倒背如流,但是只要tv具有的属性,所有带文字的组件你都可以去一试,然后再记住一些子类组件的特殊属性,基本android组件就学完一多半了。在此特别提醒!!TextView的结构最好能记住,起码也要很有了解,尤其是他的直接子类和间接子类,这个能帮助你很好的理解android的设计思想,很重要!!!希望你现在能再仔细的看一遍每一个子类的名字。
TextView是android中常用的一个文本显示组件,应用开发中出现概率为100%!连基本的hello world都用到他。
TextView的使用相信你已经有所了解,也已经或使用了,下面说一些你可能不太了解的内容。
1、首先说下TextView的在XML文件中可配置的属性
android:autoLink 属性的可选值为(none/web/email/phone/map/all),这个属性是设置后,当文本为 URL /email/电话号码/地图/以上所有 时,文本显示成可点击的链接,点击后自动进行相应的连接。
android:linksClickable 设置链接是否点击连接,即使设置了autoLink,依然可以通过此属性关闭可开启自动连接功能。
android:drawableBottom 在text的下方输出一个drawable,如图片。
android:drawableLeft 在text的左边输出一个drawable,如图片。
android:drawableRight 在text的右边输出一个drawable,如图片。
android:drawableTop 在text的正上方输出一个drawable,如图片。
android:drawablePadding 设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。
android:ellipsize 设置当文字过长时,该控件该如何显示。有如下值设置:“start”—省略号显示在开头;“end” ——省略号显示在结尾;“middle”—-省略号显示在中间;”marquee”——以跑马灯的方式显示(动画横向移动),不过这个属性亲测无效。
android:gravity 设置文本位置,如设置成“center”,文本将居中显示。
android:includeFontPadding设置文本是否在顶部和底部留有额外空白,默认为true。
android:marqueeRepeatLimit在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为 marquee_forever时表示无限次。
android:ems 设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度
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:lineSpacingExtr 设置行间距。
android:lineSpacingMultiplier 设置行间距的倍数。如”1.2,
android:shadowColor 指定文本阴影的颜色,需要与shadowRadius一起使用。
android:shadowDx 设置阴影横向坐标开始位置。
android:shadowDy 设置阴影纵向坐标开始位置。
android:shadowRadius 设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。
android:singleLine 设置单行显示,可选值为true和false。当文本不能全部显示时,后面用“…”来表示。android:text设置显示文本.
android:textColor 设置文本颜色
android:textScaleX 设置文字之间间隔,默认为1.0f。
android:textSize 设置文字大小,推荐度量单位”sp”,如”15sp”
android:textStyle 设置字形[bold(粗体),italic(斜体) , bold|italic(又粗又斜) ]可以设置一个或多个,用“|”隔开
android:typeface 设置文本字体,必须是以下常量值之一:normal , sans , serif, monospace(等宽字体) ],四种字体可以体会一下。
android:height 设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米)
android:maxHeight 设置文本区域的最大高度
android:minHeight 设置文本区域的最小高度
android:width 设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width的区别看这里。
android:maxWidth 设置文本区域的最大宽度
android:minWidth 设置文本区域的最小宽度
以上是基本属性,每一项都自己试一遍,印象更深刻一点,有时别人问我为什么知道的比他们多,其实我也没有什么好办法,假如我查到一个textview中我没见过的属性,我就顺便看下api,把其中所有没见过的属性都看一遍,如果时间可以,我就试一遍,花费不了多长时间,但是有用。
2.TextView中的html
Android是个很强大的系统,Textview是个很强大的组件,textview中可以直接放入html代码,实现内容的灵活展示。比如要显示以下效果:
你会怎么做,让我猜猜,写两个TextView,设置字体大小,设置颜色,调整两个TextView之间的距离,然后分别写入文字。。。对不对?
我没有这么做,我只放了一个TextView,什么都没做,就是拖了一个TextView在xml里,然后我写了几句代码:
tv = (TextView)findViewById(R.id.textView1);
String source ="<fontcolor=\"#909632\" >"+ "姓名: "+"</font>"+ "<font color=\"#323232\">"+"李利伟不加V"+"</font>";
tv.setText(Html.fromHtml(source));
其中我调用了tv.setText(Html.fromHtml(source));
Html.fromHtml(source)是将html代码转换为Spanned对象的方法,而Spanned继承自CharSequence。CharSequence是什么?tv.setText()方法好好看看,传参就是CharSequence。再说就是java的内容,此处不表,想详细了解的话看下api中CharSequence的结构和Spanned的结构。
作者:李利伟不加V