TextView总结
先看看TextView的类继承结构:
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
是直接继承View类的,可扩展性很强!以后自定义控件都可以继承TextView,如果有这需要的话。
TextView怎么用就不多说了,这里主要总结一下它的几个容易搞混淆的属性以及一些比较有意义的用法,开始!
1、几个容易混淆的属性
android:gravity属性:设置文字内容在水平和垂直方向上居中显示,当然还有其他的显示方式。
android:layout_margin属性:设置该TextView控件距离周围其他控件的距离。
android:padding属性:设置文字内容距离控件四边的距离。
2、自动识别
android:autoLine属性:有none、web、email、phone、map、all这6个值。最常用的是web,这里就以web为例。如果再布局文件中不指定
android:autoLink="web",那么在程序中也可以来指定,不过要比在布局文件中要复杂一下,是通过Html的fromHtml方法来实现的。
textView.setText(Html.fromHtml("<a href='http://www.csdn.cn'>http://www.csdn.cn</a>"));
3、怎样为TextView指定边框?
我们都知道android系统本身的TextView是不支持边框的,但是如果有这个需要,怎么办呢?
方法一:自定义控件继承TextView方法,在onDraw方法中,画四条线做为边框即可!具体代码如下:
@Override
protected void onDraw(Canvas canvas) {
Paint p = new Paint();
p.setColor(Color.WHITE);
canvas.drawLine(0, 0, this.getWidth()-1, 0, p);// 画上横线
canvas.drawLine(0, 0, 0, this.getHeight()-1,p );// 画左竖线
canvas.drawLine(0, this.getHeight(), this.getWidth(), this.getHeight(), p);// 画下横线
canvas.drawLine(this.getWidth(), 0, this.getWidth(), this.getHeight(), p);// 画右竖线
super.onDraw(canvas);
}
方法二:添加一个带边框的背景图片!但是在制作图片的时候最好先知道TextView的大小,以免将图片拉伸变形。
4、设置文本的行间距
android:lineSpaceingExtra属性:设置精确的行间距。
android:lineSpaceingMultiplier属性:设置行间距,以默认行间距的倍数来权衡的。
当两种都设置了的话,就以行间距最大的那个为准。
5、实现跑马灯的效果
跑马灯在很多开发中都会运用到,大家都知道,如果在布局文件中设置了TextView的跑马灯属性的话,只有在该TextView着焦的时候才会开始跑马灯效果,失去焦点又停了下来,那么究竟如何去实现它呢?这里我觉得最好的方式就是自己写一个类继承自TextView,并且覆写isFoused(),让这个方法返回true,那么这个TextView就会一直返回着焦的状态,在着焦和没有着焦的情况下都会有跑马灯的效果,而需要一直有这个跑马灯的效果的话,还需要在配置文件中配置。
下面看看自己定义的类MyTextView.java 。很简单,就只改了一句话!
public class MyTextView extends TextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean isFocused() {
return true;// 返回真
}
}
配置文件:
<dxd.android.test.MyTextView
android:id="@+id/listview_items_textview_title"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:text="最近在开发一个应用,需要用到文本的跑马灯效果,图省事,在网上找,但老半天都找不到,后来自己写了一个,很简单!"
/>
对代码做一点说明:
android:ellipsize="marquee"属性:设置跑马灯效果
android:marqueeRepeatLimit="marquee_forever"属性:永远执行跑马灯效果
基本的TextView的用法就差不多了,这些都很够用了!
TextView总结的更多相关文章
- 关于textview显示特殊符号居中的问题
话说这是2017年的第一篇博客,也是一篇技术博客.先从简单的一篇解决问题开始吧,千里之行,始于足下! ------------------------------------------------- ...
- 奇葩问题-TextView无法获取值
问题场景 前几天写一个界面的时候,遇到一个非常奇葩的问题.app第一次安装的时候,这里针对用户第一次安装的时候,后来是不会出现这个问题了.我明明是对某个界面的一个textview赋值了,而且服务端也返 ...
- 动态给textView加图片
Drawable img = layout.getResources().getDrawable(R.drawable.icon); // 调用setCompoundDrawables时,必须调用Dr ...
- TextView使用大全
最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少走弯路,写一个系列的话,大家学习起来也有头有尾. 今天就从我们每 ...
- TextField和TextView的限制输入长度
TextField的限制代理方法 只需要在这个代理方法里面code这样的代码就可以了 16 是长度可以自己设置 - (BOOL)textField:(UITextField *)textField s ...
- RAC textView的双向绑定
今天在写关于textView的数据绑定时原先写法是这样的: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #78 ...
- android textview 自动换行 整齐排版
一.问题在哪里? textview显示长文字时会进行自动折行,如果遇到一些特殊情况,自动折行会杯具成这个样子: 上述特殊情况包括: 1)全角/半角符号混排(一般是数字.字母.汉字混排) 2)全角/半角 ...
- textView的提醒文字
如果我们想提交一些备注信息,会想到用textFiled和textView两种控件去实现 1.提醒文字是textFiled的特有属性,但是textFiled显示文本只有一行,不能实现我们输入较多文字的情 ...
- 布局TextView和EditText区别,layout_width和lay_weight区别--Android Studio
1. TextView控件是文本表示控件,主要功能是向用户展示文本的内容,它是不可编辑的,如设置标题:EditText控件是编辑文本控件,主要功能是让用户输入文本的内容,它是可以编辑的.每一个控件都有 ...
- Android:TextView文字跑马灯的效果实现
解决TextView文字显示不全的问题. 简单设置跑马灯的效果: <TextView android:id="@+id/textView" android:layout_wi ...
随机推荐
- WPF - 如何引用external dll中图片
前几天一直想引用别的DLL里面的一个图片.总是出现各种各样问题,一气之下将图片拷贝到当前Project中,运行良好.虽然知道引用图片,就1.2.列出来的2点就够了. 1. The Build Acti ...
- poj 2566 Bound Found(尺取法 好题)
Description Signals of most probably extra-terrestrial origin have been received and digitalized by ...
- 502 bad gateway是什么意思
通俗解释一下 1.什么是502 bad gateway 报错? 简单来说 502 是报错类型代码 bad gateway 错误的网关 2.产生错误的原因 连接超时 我们向server器发送请求 因为s ...
- JavaScript深拷贝和浅拷贝
1. 基本类型 和 对象类型 他们最大的区别就是在于他们的传值方式. 基本类型是传值 对象类型就是传引用. 这里复制一份obj叫做obj2, 这里修改了obj2的b为100 同时也修改了obj1.b. ...
- Android调试系列—使用android studio调试smali代码
1.工具介绍 使用工具 android killer:用于反编译apk包,得到smali代码 android studio:调试smali代码工具,或者使用idea,android studio就是在 ...
- IE6 浏览器常见兼容问题 大汇总(23个)
IE6以及各个浏览器常见兼容问题 大汇总 综述:虽然说IE6在2014年4月将被停止支持,但是不得不说的是,IE6的市场并不会随着支持的停止而立刻消散下去,对于WEB前端开发工程师来说,兼容IE6 兼 ...
- android Log.isLoggable步骤的使用
原文地址: http://www.cnblogs.com/maxinliang/p/4024442.html android Log.isLoggable方法的使用 android 动态控制logca ...
- ios文件读取(二)
- (void)viewDidLoad { [super viewDidLoad]; /** * @brief 获取文件路径 * */ NSString * filePath = [self get ...
- DataSet与DataAdapter的关系
DataSet 作用:DataSet,DataAdapter读取数据. 问:什么是DataAdapter?答:DataAdapter对象在DataSet与数据之间起桥梁作用 string strCon ...
- 自动生成代码工具【JAVA版】
发现任何项目无非五类操作:新增.修改.删除.查询详细.查询列表 大多数的服务端基础代码都是相同的,但是每次开发一个新项目都会做很多重复工作,从controller,bean,service,到数据库访 ...