在android中,如果设置了TextView控件为单行显示,且显示的文本太长的话,默认情况下会造成显示不全的情况,这种情况下我们需要设置该控件属性如下:

 <TextViewandroid:id="@+id/tv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:singleLine="true"android:ellipsize="marquee"android:focusable="true"android:focusableInTouchMode="true"android:text="@string/hello_world"/>

注意上述标记颜色的3个属性,按照上述设置这3个属性,此TextView空间就会滚动显示文本内容,保证了文本的完全显示。
但是,上述方式只适用于界面中只有1个TextView的情况,当一个界面之中有多个TextView设置了相同属性,有且只有一个控件会滚动显示,其他TextView控件则不会滚动显示。
造成这种情况的原因是TextView空间在滚动显示的时候必须获得焦点,但是默认情况下,只能有一个TextView空间获得焦点,所以造成上述情况。
解决的方法很简单,重写类TextView的方法 isFocused(),使其总是返回true,即总是属于被选中的状态,这样就能够保证多个TextView控件都有滚动显示的效果。
首先是继承TextView的类:
package com.example.administrator.test_hello_world;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
/*** Created by Administrator on 2016/3/17.* 实现跑马灯效果的TextView*/
public class marqueeText extends TextView {public marqueeText(Context context) {super(context);}public marqueeText(Context context, AttributeSet attrs) {super(context, attrs);}public marqueeText(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}//返回textview是否处在选中的状态//而只有选中的textview才能够实现跑马灯效果
    @Overridepublic boolean isFocused() {return true;}
}

接下来是布局文件:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!--singleLine只能是单行显示--><com.example.administrator.test_hello_world.marqueeTextandroid:id="@+id/tv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:singleLine="true"android:ellipsize="marquee"android:focusable="true"android:focusableInTouchMode="true"android:text="@string/hello_world"/><com.example.administrator.test_hello_world.marqueeTextandroid:id="@+id/tv2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:singleLine="true"android:ellipsize="marquee"android:focusable="true"android:focusableInTouchMode="true"android:text="@string/hello_world"/>
</LinearLayout>

最后是Activity:
MainActivity.java

package com.example.administrator.test_hello_world;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {void init_view() {}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);init_view();}
}

转载于:https://www.cnblogs.com/zhoudayang/p/5289833.html

android TextView实现滚动显示效果相关推荐

  1. Android:TextView 自动滚动(跑马灯) (转)

    Android:TextView 自动滚动(跑马灯) TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" ...

  2. android TextView向上滚动(模仿滚动文字广告效果)

    android文字向上滚动效果没有自带的控件,这就需要开发者根据算法精确按照时间和坐标来实现TextView控件的向上移动,从网上找过几个框架,基本都会有bug,于是自己写了一个自定义控件,来实现Te ...

  3. Android TextView循环滚动弹幕效果

    最近做需求要写一个滚动弹幕的特效,要求是一直循环滚动,并且从左边出去部分的要从右边进入. ​​​​​​​ 1.首先想到的是用Android TextView自带的跑马灯效果,设置一下android:e ...

  4. Android TextView垂直滚动,并精准定位到最后一行

    文章目录 1. 问题提出 2.无法精准定位的产生原因 3. 解决方案 1. 问题提出 在使用TextView垂直滚动添加内容,并自动定位到最后一行时,往往会出现TextView没有办法精准定位的情况, ...

  5. android上垂直跑马灯,android textview 垂直滚动and水平跑马灯

    垂直滚动的话就挺简单的.当然了不是自动的垂直滚动.如果是自动的垂直滚动的话还需要自定义.所以如果有需求需要textview 可以垂直滚动的话,那你来这里就对了. 直接贴 代码.就是这么任性. andr ...

  6. android文字多行滚动显示,Android TextView多行文本滚动实现

    Android中我们为了实现文本的滚动可以在ScrollView中嵌入一个TextView,其实TextView自己也可以实现多行滚动的,毕竟ScrollView必须只能有一个直接的子类布局.只要在l ...

  7. android文字自动滚动,Android TextView文字横向自动滚动(跑马灯)

    TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" 2.设置可滚到,或显示样式:android:elli ...

  8. 让android的TextView可以滚动

    让android的TextView可以滚动 android 我想要在一个文本视图里显示一段文本,但是文字太多,一屏显示不下.我需要让我的TextView可以滚动.我应该怎么做,这是我的代码. fina ...

  9. Android TextView滚动的两种方案

    方案有两个 1使用Android原生TextView,优点是简单,缺点是一旦失去焦点,就无法滚动了. 2自定义TextView,缺点是稍微麻烦点,优点是可以一直滚动. 方案1 使用Android原生T ...

最新文章

  1. 将iPad, iPhone直投屏幕用于TEASOFT课程录制
  2. Android项目Build报错Unable to execute dx(65535问题解决方案)
  3. 深度学习在推荐领域的应用
  4. linux的svn同步文件在哪里,linux svn服务器同步文件在哪里
  5. 在Go语言程序中使用gojson来解析JSON格式文件
  6. 拉文大学计算机科学,拉文大学
  7. Google+ 为什么会死?
  8. Security+ 学习笔记49 事件调查
  9. Alex 的 Hadoop 菜鸟教程: 第6课 Hbase 安装教程
  10. ElementUI表单构建
  11. 【愚公系列】2022年11月 .NET CORE工具案例-.NET 7中的WebTransport通信
  12. 超详细如何配置将WAN接入
  13. 08.甲流疫情死亡率
  14. 编程:5 位评委对参赛选手进行打分,将所有的打分结果存储在对应类型的数组中,将所有评分结果 去除一个最低分,去除一个最高分,然后获取剩余 3 位评委的平均分数为选手的最终得分。设计程序, 用键盘输入
  15. 电荷放大器的Matlab仿真
  16. 在iPhone上实现标签云
  17. 单点液位开关和连续液位传感器之间的区别及选择注意事项
  18. 不惧断网,IoT高可靠物联网连接服务,网络可用性达 99.999%
  19. linux内存给hdd当缓存,linux块设备加速缓存之bcache [转]
  20. 粒子以及粒子间相互作用

热门文章

  1. 将中文日期转换成自己想要的格式如:2018年09月29日转换成2018-09-29
  2. spark安装和优化
  3. 在eclipse中开发servlet流程
  4. 《CSS揭秘》第五章:字体排印
  5. 程序员如何写出更好的代码
  6. 关于NLPIR应用在KETTLE中的探索
  7. vs中不得不会的一些小技巧(1)——细说查找
  8. Python 全栈开发 -- 开发环境篇
  9. ASP.NET MVC Model元数据(五)
  10. 如何设置iframe高度自适应,在跨域的情况下能做到吗?