Android实现在TextView文字过长时省略部分或滚动显示的方法

本文实例讲述了Android实现在TextView文字过长时省略部分或滚动显示的方法。分享给大家供大家参考,具体如下:

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);

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android滚动条与滚动操作技巧总结》、《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Android中实现在矩形框中输入文字显示剩余字数的功能

    虽然这两个功能都比较简单,但是在实际app开发中真的很常见,特别是显示字数或剩余字数这个功能 如下图: 要实现上面的功能,需要做到三点: 1.实现矩形框布局 思路就是矩形框作为整个布局的一个background,在drawable中创建一个shap.xml样式文件 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/

  • Android 自定义控件实现显示文字的功能

    Android 自定义控件实现显示文字的功能 自定义控件-–逐个显示文字 ONE Goal ,ONE Passion ! 前言: 今天要实现的效果时.让我们的文字一个一个显示出来.上效果图吧: 实现原理: 1,拿到要显示的文字. 2,计算文字显示的速率 字体显示的速度 v = 总的字体长度 / 总的显示时间 3,将文字根据速率显示到控件上. 自定义View: public class printTextView extends TextView { /** * 字体显示出来的时间 */ priv

  • Android实现文字逐字显示出来

    先上Android实现文字逐字显示出来效果图,供大家参考,具体内容如下 可以采用自定义TextView的方式去实现,也可才用定时更新文字显示,思路是让TextView每隔一秒显示以一个字符串(并非每一秒多出来一个汉字),那么就简单了,可以开启一个线程,那么线程主要方法如下: public static void startTv(final int n) { new Thread( new Runnable() { @Override public void run() { try { final

  • Android编程实现控件不同状态文字显示不同颜色的方法

    本文实例讲述了Android编程实现控件不同状态文字显示不同颜色的方法.分享给大家供大家参考,具体如下: 方式一: 第一要选择的控件 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/close_time_display" android:layout_marginRight="20

  • Android实现在TextView文字过长时省略部分或滚动显示的方法

    本文实例讲述了Android实现在TextView文字过长时省略部分或滚动显示的方法.分享给大家供大家参考,具体如下: TextView中有个ellipsize属性,作用是当文字过长时,该控件该如何显示,解释如下: 1.android:ellipsize="start"-–省略号显示在开头 2.android:ellipsize="end"--省略号显示在结尾 3.android:ellipsize="middle"--省略号显示在中间 4.an

  • Android开发中TextView文本过长滚动显示实现方法分析

    本文实例讲述了Android开发中TextView文本过长滚动显示实现方法.分享给大家供大家参考,具体如下: 项目中在使用TextView时,总会有因要显示的内容过多而需要我们进行处理的问题.我们第一时间想到的是TextView的android:ellipsize属性,比如 android:ellipsize="end",效果是在文字的尾部打三个小点. 但是这个属性要配合android:singLine="true"使用.通常来说,要实现尾端三个点的省略号形式是比较

  • Android中利用NetworkInfo判断网络状态时出现空指针(NullPointerException)问题的解决方法

    在Android中,很多人会用如下的方法判断当前网络是否可用: /** * 获取当前网络状态(是否可用) */ public static boolean isNetworkAvailable() { boolean isAalable = false; ConnectivityManager connManager = (ConnectivityManager) BaseApplication.getApplication().getSystemService(Context.CONNECTI

  • Android编程实现大图滚动显示的方法

    本文实例讲述了Android编程实现大图滚动显示的方法.分享给大家供大家参考,具体如下: 问题: 我有一张比较大的图片,比如长宽都是屏幕的两倍大小,我想实现的功能是首先将图片居中显示,由于图片太大显然只能显示一部分,然后可以通过拖动,实现图片的平滑滚动(既看不出来滚动刷新痕迹). 就像google地图一样,如果用mapView这个控件,那么可以在屏幕上拖动整个地图,但是由于地图信息量太大,如果一次拖动过快,那么屏幕会暂时显示出一些刷新痕迹(灰白的格子). 想使用mapView来加载已有图片,但是

  • Android编程开发之TextView文字显示和修改方法(附TextView属性介绍)

    本文实例讲述了Android编程开发之TextView文字显示和修改方法.分享给大家供大家参考,具体如下: 一. 新建一个Activity 和 Layout 首先在layout文件夹中新建一个activity_main.xml,在新建工程的时候一般默认会新建此xml文件,修改其代码如下: activity_main.xml 代码 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x

  • Android开发之TextView控件用法实例总结

    本文实例总结了Android开发之TextView控件用法.分享给大家供大家参考,具体如下: TextView控件可以向用户展现文本信息,我们可以设置该文本信息是否能编辑 1.TextView基本使用 在程序中创建TextView对象 在xml文件中布局使用 2.New Android Project-> Project name:TextView Build Target:Android 2.2 Application name:TextViewDemo Package name:com.b5

  • Android TextView实现垂直滚动效果的方法

    本文实例讲述了Android TextView实现垂直滚动效果的方法.分享给大家供大家参考,具体如下: 在TextView中,如果文本很长,可能需要实现垂直滚动显示文本的效果.这里需要在XML布局文件中为TextView设置如下几个属性. Android:scrollbars="vertical" android:scrollbarStyle="X" 其中X为outsideOverlay或insideOverlay. android:scrollbarFadeDur

  • Android设置当TextView中的文字超过TextView的容量时用省略号代替

    有时候在ListView中显示Textview时由于长度过长而导致text会隔行显示,UI上看起来就比较的不友好. 官方提供了相关的实现单行显示的方法. 只需要下边的设置: textview.setSingleLine(); textview.setEllipsiz(TextUtils.TruncateAt.valueOf("END")); 在xml中设置如下: android:singleLine="true" android:ellipsize="en

  • Android手机开发 控件 TextView文字居中

    有2种方法可以设置TextView文字居中: 一:在xml文件设置:Android:gravity="center" 二:在程序中设置:txtTitle.setGravity(Gravity.CENTER); 设置控件居中: android:layout_gravity="center"是对textview控件在整个布局中居中,也可以在其父layout中调用设置android:gravity="center" 程序中也是需要设置其所在控件的父la

  • 浅谈Android textview文字对齐换行的问题

    今天忽然发现android项目中的文字排版参差不齐的情况非常严重,不得不想办法解决一下. 经过研究之后,终于找到了textview自动换行导致混乱的原因了----半角字符与全角字符混乱所致!一般情况下,我们输入的数字.字母以及英文标点都是半角,所以占位无法确定. 它们与汉字的占位大大的不同,由于这个原因,导致很多文字的排版都是参差不齐的. 对此我找到了两种办法可以解决这个问题: 1. 将textview中的字符全角化. 即将所有的数字.字母及标点全部转为全角字符,使它们与汉字同占两个字节,这样就

随机推荐