先看看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总结的更多相关文章

  1. 关于textview显示特殊符号居中的问题

    话说这是2017年的第一篇博客,也是一篇技术博客.先从简单的一篇解决问题开始吧,千里之行,始于足下! ------------------------------------------------- ...

  2. 奇葩问题-TextView无法获取值

    问题场景 前几天写一个界面的时候,遇到一个非常奇葩的问题.app第一次安装的时候,这里针对用户第一次安装的时候,后来是不会出现这个问题了.我明明是对某个界面的一个textview赋值了,而且服务端也返 ...

  3. 动态给textView加图片

    Drawable img = layout.getResources().getDrawable(R.drawable.icon); // 调用setCompoundDrawables时,必须调用Dr ...

  4. TextView使用大全

    最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少走弯路,写一个系列的话,大家学习起来也有头有尾. 今天就从我们每 ...

  5. TextField和TextView的限制输入长度

    TextField的限制代理方法 只需要在这个代理方法里面code这样的代码就可以了 16 是长度可以自己设置 - (BOOL)textField:(UITextField *)textField s ...

  6. RAC textView的双向绑定

    今天在写关于textView的数据绑定时原先写法是这样的: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #78 ...

  7. android textview 自动换行 整齐排版

    一.问题在哪里? textview显示长文字时会进行自动折行,如果遇到一些特殊情况,自动折行会杯具成这个样子: 上述特殊情况包括: 1)全角/半角符号混排(一般是数字.字母.汉字混排) 2)全角/半角 ...

  8. textView的提醒文字

    如果我们想提交一些备注信息,会想到用textFiled和textView两种控件去实现 1.提醒文字是textFiled的特有属性,但是textFiled显示文本只有一行,不能实现我们输入较多文字的情 ...

  9. 布局TextView和EditText区别,layout_width和lay_weight区别--Android Studio

    1. TextView控件是文本表示控件,主要功能是向用户展示文本的内容,它是不可编辑的,如设置标题:EditText控件是编辑文本控件,主要功能是让用户输入文本的内容,它是可以编辑的.每一个控件都有 ...

  10. Android:TextView文字跑马灯的效果实现

    解决TextView文字显示不全的问题. 简单设置跑马灯的效果: <TextView android:id="@+id/textView" android:layout_wi ...

随机推荐

  1. css与 js动画 优缺点比较

    我们经常面临一个抉择:到底使用JavaScript还是CSS动画,下面做一下对比 JS动画 缺点:(1)JavaScript在浏览器的主线程中运行,而主线程中还有其它需要运行的JavaScript脚本 ...

  2. HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth之全然具体解释

      HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth究竟指的哪到哪的距离之全然具体解释scrollHeight: 获取对象的滚动高度. scrol ...

  3. 多路复用I/O epoll()

    epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获 ...

  4. [转载]aptitude与apt-get的区别和联系

    转自 http://www.cnblogs.com/yuxc/archive/2012/08/02/2620003.html 命令 下面将要介绍的所有命令都需要sudo!使用时请将“packagena ...

  5. 监控工具zabbix

    1 安装zabbixyum install -y epel-release安装rpm包的lamp环境 yum install  httpd mysql mysql-libs php php-mysql ...

  6. Impala 源码分析-FE

    By yhluo 2015年7月29日 Impala 3 Comments Impala 源代码目录结构 SQL 解析 Impala 的 SQL 解析与执行计划生成部分是由 impala-fronte ...

  7. Web C# 导出Excel 方法总结

    方法1:微软推荐服务器需安装Excel型 依赖: 软件:Office Excel 2007-2013 引用:Microsoft Office 14.0 Object Library 1.1 数据准备 ...

  8. java下的第一个redis

    Redis支持很多编程语言的客户端,有C.C#.C++.Clojure.Common Lisp.Erlang.Go.Lua.Objective-C.PHP.Ruby.Scala,甚至更时髦的Node. ...

  9. 利用MiddleGen-hibernate-r5生成hbm文件及POJO文件

    1       先决条件 1.1    已安装JDK(版本1.5以上)并配置环境变量 到http://java.sun.com上下载JDK,配置环境变量(我的电脑右键->属性->高级-&g ...

  10. keil中查看内存数据

    1.工具栏中 view->Memory Windows 然后  c:0 表示读取0地址开始的代码区数据  d:0 表示读取0地址开始的数据区数据  x:0表示读取0地址开始的外部数据区