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中简单设置几个属性就可以轻松实现。
<TextView 
android:id="@+id/tvCWJ" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:scrollbars="vertical" <!--垂直滚动条 -->
android:singleLine="false" <!--实现多行 -->
android:maxLines="15" <!--最多不超过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中实现:
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:singleLine="true"
android:text="dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
android:marqueeRepeatLimit="marquee_forever" android:ellipsize="marquee"
android:scrollHorizontally="true" android:width="150dip"></TextView>
一切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即可

<com.widget.ScrollForeverTextView

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">

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

01import android.content.Context;
02import android.util.AttributeSet;
03import android.widget.TextView;
04 
05/**
06 * 单行文本跑马灯控件
07 *
08 * @author admin
09 *
10 */
11 
12public 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值