• 今天碰到一个问题TextView 显示文本过长,内容必须还得看见,有的人说,这还不简单,让textview,设置marquee属性
    让它自动滚动,你见过哪家app文本过长,都是让它滚动,搞得这么二吗,
    还有一种方式,就是让它多行显示,这个,有时候布局的高度不一致,会影响美观。
  • 最后,就是在网上看见的HorizontalView 嵌套textview,这种方法可行。但是,有时候有点坑。
    先介绍这一种方法以及注意事项:
<HorizontalScrollView
        android:layout_width="match_parent"android:layout_height="wrap_content"android:scrollbars="none"><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!*******************************************************************************************" /></HorizontalScrollView>
  • 切记textView width设置成wrap_content 要不不滚动,至于为什么,没有深究。
如果不想这么解决,还有就是自定义view,实现文本过长的时候滚动效果。下面直接上代码:public class HorizontalScrollTextView extends TextView {private TextPaint textPaint;private int viewWidth;//textview控件宽度private float mLastDownX;private Scroller mScroller;//利用scroller实现滚动效果private int textWidth;//文本的宽度public static final String TAG = HorizontalScrollTextView.class.getName();/*** 滑动的距离*/private int mMoveLen = 0;public HorizontalScrollTextView(Context context) {super(context);init(context);}public HorizontalScrollTextView(Context context, AttributeSet attrs) {super(context, attrs);init(context);}private void init(Context context){mScroller = new Scroller(context);textPaint = getPaint();setEllipsize(null);setSingleLine();}private void smoothScrollTo(int destX,int destY){int scrollX = getScrollX();int delta = destX - scrollX;mScroller.startScroll(scrollX,0,delta,0,1000);invalidate();}@Overridepublic void computeScroll() {if(mScroller.computeScrollOffset()){scrollTo(mScroller.getCurrX(),mScroller.getCurrY());postInvalidate();}}public HorizontalScrollTextView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);viewWidth = getMeasuredWidth();initTextWidth();Log.e(TAG,"measuredwidth:"+viewWidth);Log.e(TAG,"textwidth:"+textWidth);}private void initTextWidth(){Rect rect = new Rect();textPaint.getTextBounds(getText().toString(),0,getText().length(),rect);textWidth = rect.right - rect.left+getPaddingRight()+getPaddingLeft();}@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getActionMasked()) {case MotionEvent.ACTION_DOWN:doDown(event);break;case MotionEvent.ACTION_MOVE:doMove(event);break;case MotionEvent.ACTION_UP:doUp(event);break;default:break;}return true;}private void doDown(MotionEvent event){if(viewWidth < textWidth){mLastDownX = event.getX();}}private void doMove(MotionEvent event){if(viewWidth < textWidth){//当viewWidth < textWidth 说明文本比控件长 此时是滑动字体的情况满足mMoveLen += (event.getX() - mLastDownX);//记录滑动方向int moveMaxLen = textWidth - viewWidth;//记录滑动的最大距离Log.e(TAG,"doMove: mMoveLen:"+mMoveLen+" moveMaxLen:"+moveMaxLen);if(mMoveLen < 0){//向左滑动时候 让它向左滚动 moveMaxLen的距离,刚好把文本显示完全smoothScrollTo(moveMaxLen,getScrollY());return;}else{//向右滑动的时候,让内容滚动到初始位置smoothScrollTo(0,getScrollY());return;}}//setEllipsize();}private void doUp(MotionEvent event){}}

-就这么几行代码就搞定了,现在不支持gravity = center的情况。支持padding
这么丑的代码是我自己写的,所以没有链接可以给,有什么好的建议,欢迎。

TextView 字体过长解决方案(实现手动滚动字体)相关推荐

  1. JS图片自动或者手动滚动效果(支持left或者up)

    JS图片自动或者手动滚动效果 在谈组件之前 来谈谈今天遇到搞笑的事情,今天上午接到一个杭州电话 0571-28001187 即说是杭州人民法院的 貌似说我用招商银行信用卡在今年的6月23日借了招商银行 ...

  2. Android 滑动侧边栏(Sliding Menu)第一种实现 - 1 手动滚动+自动滚动

    之前的分析与一种解决方案,当前例子未充分考虑处理Touch事件,之后会接着完善例子. <Android 滑动侧边栏(Sliding Menu)实现分析> <Android 滑动侧边栏 ...

  3. 彻底变换PreferenceFragment样式和全局设置字体样式的解决方案

    一.PreferenceFragment样式修改 新样式 直接上图,原样式为白色样式,即为PreferenceFragment的默认样式: ① 白底黑字:② SwitchPreference开关默认为 ...

  4. Flash中文字体嵌入终极解决方案

    Flash中文字体嵌入终极解决方案 http://www.xiumu.org/technology/flash-chinese-characters-embedded-in-the-ultimate- ...

  5. QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置

    QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置 参考文章: (1)QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置 (2)https:// ...

  6. 该文件夹包含名称过长 解决方案

    该文件夹包含名称过长 解决方案 参考文章: (1)该文件夹包含名称过长 解决方案 (2)https://www.cnblogs.com/cao-zhen/p/9871437.html 备忘一下.

  7. Android TextView 设置文字背景色或文字颜色,字体阴影,字体样式

          String str="这是设置TextView部分文字背景颜色和前景颜色的demo!";         int bstart=str.indexOf("背 ...

  8. 在网页中嵌入任意字体(特殊字体/自定义字体)的解决方案

    在网页中嵌入任意字体(特殊字体/自定义字体)的解决方案 参考文章: (1)在网页中嵌入任意字体(特殊字体/自定义字体)的解决方案 (2)https://www.cnblogs.com/yuwenson ...

  9. ora-01489 字符串连接的结果过长 解决方案

    ora-01489 字符串连接的结果过长 解决方案 参考文章: (1)ora-01489 字符串连接的结果过长 解决方案 (2)https://www.cnblogs.com/iupoint/p/10 ...

最新文章

  1. 松本行弘:我的编程人生
  2. linux 静态编译 glibc,GCC静态链接glibc库
  3. 还是畅通工程(1233 并查集+kruskal)
  4. 京东秒杀系统模块的Redis分布式锁深度剖析,没给你讲明白你打我
  5. 小女生的Linux技术~~~Linux常识~~21-30
  6. java返回特定下标元素_java基础--输出数组中指定元素的下标
  7. 单片机定时器_单片机定时器/计数器基本原理
  8. 将摄像头拍摄图像或者本地图片设置为头像的方法
  9. 流量分析的瑞士军刀:Zeek
  10. MySQL:Specified key was too long; max key length is 1000 bytes
  11. 脉冲控制仪C语言程序,可编程脉冲控制仪
  12. 给Metasploit安装无Lorcon2线支持模块
  13. CSV 导入SQL Server(bulk insert方式)
  14. 《软件工程》第5章系统建模
  15. 拆弹实验-phase_6
  16. 企业单位Win 10家庭版如何打开Guest用户,并共享打印机
  17. DPPO:Distributed Proximal Policy Optimization
  18. vscode打开项目从中文界面变成英文界面的问题
  19. 一步步教你接入个推 推送
  20. Ruby on Rails的核心特性是什么?

热门文章

  1. 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发
  2. dalvik启动过程
  3. IQ, EQ, CQ, AQ, BQ, NQ, FQ, DQ, SQ, MQ 十商
  4. Number、parseInt和parseFloat的区别
  5. 音视频高级开发——如何快速学习FFmpeg丨ffplay、ffmpeg命令如何编程实现
  6. 鸿蒙os2无法使用时钟,mate30pro鸿蒙系统无法加载时钟小部件
  7. c++ socket 多客户并发访问传输文件_Nginx:论高并发,在座各位都是渣渣
  8. 自学了两年自动化门都没入?资料收藏家的名汇倒是锤实了,附入门教程...
  9. 台式电脑拍照软件_电脑维护的几点注意
  10. condarc怎么修改_怎么修改pip源和conda源