android textView文字过长,省略显示

Android之TextView实现文字过长时省略部分或者滚动显示
发布时间:2011-10-08   信息来源:青岛达内

TextView中有个ellipsize属性,作用是当文字过长时,该控件该如何显示,解释如下:
1.android:ellipsize=”start”—–省略号显示在开头
2.android:ellipsize=”end”——省略号显示在结尾
3.android:ellipsize=”middle”—-省略号显示在中间
4.android:ellipsize=”marquee”–以跑马灯的方式显示(动画横向移动)
文字左右滚动三个属性: 
android:singleLine="true" 
android:ellipsize="marquee" 
android:marqueeRepeatLimit="marquee_forever"
Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟 ScrollView必须只能有一个直接的子类布局。只要在layout中简单设置几个属性就可以轻松实现。
android:id="@+id/tvCWJ" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:scrollbars="vertical"
android:singleLine="false"
android:maxLines="15"
android:textColor="#FF0000"
/>

  • < TextView

  • android:id = "@+id/app_shortcontent"

  • android:layout_width = "wrap_content"

  • android:layout_height = "wrap_content"

  • android:singleLine = "true"

  • android:textColor = "#FFFFFFFF"

  • android:scrollHorizontally = "true"

  • android:focusable = "true"

  • android:ellipsize = "marquee"

  • android:marqueeRepeatLimit = "marquee_forever" />
当然我们为了让TextView动起来,还需要用到TextView的setMovementMethod方法设置一个滚动实例,代码如下
TextView tv = (TextView)findViewById(R.id.tvCWJ); 
tv.setMovementMethod(ScrollingMovementMethod.getInstance()); // Android开发网提示相关的可以查看SDK中android.text.method分支了解更多
附:
顺便讲下 TextView 自动滚动的实现方法,下面介绍两种方法:
一、在代码中实现:
textView .setEllipsize(TextUtils.TruncateAt.MARQUEE);
textView .setSingleLine(true);
textView .setMarqueeRepeatLimit(6);
二、在XML中实现:
android:layout_height="wrap_content" android:singleLine="true"
android:text="dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
android:marqueeRepeatLimit="marquee_forever" android:ellipsize="marquee"
android:scrollHorizontally="true" android:width="150dip">

一切OK,当 textView 获取焦点后,就会自动滚动。
补充 ==============================
不管是手动还是自动 你要实现滚动就得加scrollview
到时候可以通过handle来调用scrollview的scrollTo方法实现滚动
Handler mHandler = new Handler();
private Runnable mScrollToBottom = new Runnable() {
public void run() {
mScrollView.scrollTo(0, offset);
}
};
onTouch里面
mHandler.post(mScrollToBottom);
补充 ====================
补充:
1,把 textview的 Ellipsize 设置成 marquee(上面有说)
2,把 Deprecated的 Single line 设置成 true
3,设置textview的Marquee repeat limit 属性(滚动回数,默认是无数回)
贴个代码吧.
textview.setEllipsize(TextUtils.TruncateAt.MARQUEE);
textview.setSingleLine(true);
textview.setMarqueeRepeatLimit(6);


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

TextView是最常用的Android控件之一,显示文字时的首选,然而很多人都不满足于,TextView默认的显示效果,

希望加入诸如跑马灯,文字阴影的效果,下面我就来介绍下Android中文字跑马灯和文字阴影的简单实现方法。

    一,文字跑马灯

    同样的,先上效果图,

    实现起来非常简单,TextView中已经提供了多种显示接口,可以在文字显示不下时,以各种方式进行显示

例如

前置省略号
后置省略号

中间省略号  
跑马灯显示  

主要的区别在Xml中android:ellipsize 属性的不同

android:ellipsize

    设置当文字过长时,该控件该如何显示。有如下值设置:”start”—–省略号显示在开头;”end”——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——跑马灯的方式显示(动画横向移动)


由此只需要在Xml文件中设置TextView的ellipsize属性为marquee即可

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:textSize="28dip" android:singleLine="true"

android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever"

android:textColor="#ffd0eeee" android:text="超出七个字会有跑马灯效果"

android:focusable="true" android:id="@+id/channel">


这里你一定发现了,笔者自定义了一个TextView对他进行了显示。原因是TextView只会在当获得焦点时才对文字显示效果进行相应,我们要实现一直显示跑马灯,需要对其进行自定义,方法很简单,覆盖TextView的isFocused()函数,让它一直返回true就行了

01 import android.content.Context;
02 import android.util.AttributeSet;
03 import android.widget.TextView;
04  
05 /**
06  * 单行文本跑马灯控件
07  *
08  * @author admin
09  *
10  */
11  
12 public class ScrollForeverTextView extends TextView {
13  
14     public ScrollForeverTextView(Context context) {
15         super(context);
16         // TODO Auto-generated constructor stub
17     }
18  
19     public ScrollForeverTextView(Context context, AttributeSet attrs) {
20         super(context, attrs);
21     }
22  
23     public ScrollForeverTextView(Context context, AttributeSet attrs,
24             int defStyle) {
25         super(context, attrs, defStyle);
26     }
27  
28     @Override
29     public boolean isFocused() {
30         return true;
31     }
32  
33 }
然后再将这个自定义的TextView显示屏幕上就大功告成了。  
    二,文字阴影 
    先上效果图 
 
同跑马灯一样,Android也为TextView文字阴影提供了显示接口,可以方便的设置文字阴影 

android:shadowColor
指定文本阴影的颜色,需要与shadowRadius一起使用。

android:shadowDx
设置阴影横向坐标开始位置。

android:shadowDy

设置阴影纵向坐标开始位置。

android:shadowRadius

设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。




转自:http://www.qdtarena.com/Html/News/96.html
http://my.oschina.net/u/126188/blog/29387

你可能感兴趣的:(android,开发,android,layout,deprecated,constructor,xml)