简易实现 TextView单行文本水平触摸滑动效果
2016-03-14 16:06
106 查看
为了方便查看,已使用markdown编辑形成新博文。
本文Mardown地址
近期做应用的时候实用到TextView单行长文本,当文本内容过长时候又想实现触摸水平滑动效果。
网上找了非常多,都没有看到有效解决方式。
当中,最常见的也是最笨拙滴採用重写TextView并继承实现touch 和 Gesture手势。
后来经提醒发现了事实上最简单的方案:
直接使用 EditText 就好了。
由于edittext须要编辑和移动光标的缘故。使得它是能够水平滑动的。因此我们仅仅须要设置其为透明背景,而且不能够获得焦点。
(注:不能使用editable=“false”,由于这样就不能编辑滑动。而通过使用focusable="false"相同不可编辑同一时候能够滑动)
补充一点,要隐藏光标,仅仅用设置
android:cursorVisible="false"//隐藏
或
setCursorVisible(false);
这里记录下来给大家点儿启发。
不必用自以为聪明的方法办最笨的事儿。
共勉。
源代码地址(附长文本折叠展开)
后边贴一些小白教程,能够忽视:(下面内容非原创,见谅)
一、仅仅想让TextView显示一行,可是文字超过TextView的长度怎么办?
在开头显示省略号
android:singleLine="true"
android:ellipsize="start"
在结尾显示省略号
android:singleLine="true"
android:ellipsize="end"
在中间显示省略号
android:singleLine="true"
android:ellipsize="middle"
横向自己主动滚动(跑马灯效果)
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
以上4个效果都要加上 android:singleLine="true",由于TextView默认是会自己主动换行的
android:ellipsize是设置文字过长时。该怎么显示
android:marqueeRepeatLimit="marquee_forever"是设置永远反复。当然你也能够设置详细的数字
android:focusable="true"和android:focusableInTouchMode="true"一定要加上,不然滚动效果出不来
二、怎么让TextView能够垂直滚动?
在Java代码中增加以下一句话就能够实现垂直滚动
textView.setMovementMethod(ScrollingMovementMethod.getInstance());
本文Mardown地址
近期做应用的时候实用到TextView单行长文本,当文本内容过长时候又想实现触摸水平滑动效果。
网上找了非常多,都没有看到有效解决方式。
当中,最常见的也是最笨拙滴採用重写TextView并继承实现touch 和 Gesture手势。
后来经提醒发现了事实上最简单的方案:
直接使用 EditText 就好了。
由于edittext须要编辑和移动光标的缘故。使得它是能够水平滑动的。因此我们仅仅须要设置其为透明背景,而且不能够获得焦点。
android:focusable="false"
<span style="background-color: rgb(240, 240, 240);"><span style="font-size:10px;">android:background="@android:color/transparent"</span></span>
(注:不能使用editable=“false”,由于这样就不能编辑滑动。而通过使用focusable="false"相同不可编辑同一时候能够滑动)
补充一点,要隐藏光标,仅仅用设置
android:cursorVisible="false"//隐藏
或
setCursorVisible(false);
这里记录下来给大家点儿启发。
不必用自以为聪明的方法办最笨的事儿。
共勉。
<EditText android:id="@+id/tt" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" android:layout_margin="15dip" android:background="@android:color/transparent" android:focusable="false" android:singleLine="true" android:text="简易实现 TextView单行文本水平触摸滑动效果。简易实现 TextView单行文本水平触摸滑动效果。简易实现 TextView单行文本水平触摸滑动效果" android:textColor="#000" android:textSize="20dip" /> </LinearLayout>效果图:
源代码地址(附长文本折叠展开)
后边贴一些小白教程,能够忽视:(下面内容非原创,见谅)
一、仅仅想让TextView显示一行,可是文字超过TextView的长度怎么办?
在开头显示省略号
android:singleLine="true"
android:ellipsize="start"
在结尾显示省略号
android:singleLine="true"
android:ellipsize="end"
在中间显示省略号
android:singleLine="true"
android:ellipsize="middle"
横向自己主动滚动(跑马灯效果)
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
以上4个效果都要加上 android:singleLine="true",由于TextView默认是会自己主动换行的
android:ellipsize是设置文字过长时。该怎么显示
android:marqueeRepeatLimit="marquee_forever"是设置永远反复。当然你也能够设置详细的数字
android:focusable="true"和android:focusableInTouchMode="true"一定要加上,不然滚动效果出不来
二、怎么让TextView能够垂直滚动?
在Java代码中增加以下一句话就能够实现垂直滚动
textView.setMovementMethod(ScrollingMovementMethod.getInstance());
相关文章推荐
- 【探索】利用 canvas 实现数据压缩
- Vector
- dispaly:table布局
- 字母和数字(ASCII码)的相互转换
- 使用profile解决maven不同的环境deploy到不同的repositories
- Andrew Ng机器学习笔记+Weka相关算法实现(一)梯度下降与回归方法
- javascript作用域链学习笔记
- Javascript学习笔记:闭包题解(3)
- Ubuntu下freeradius-server的安装
- node.js学习之react,redux,react-redux
- Android常用权限
- ThinkPHP框架安全实现分析
- 程序媛开练之Java之反射
- 【nodejs+ejs】如何给模板传参数?
- 时间util Calendar
- java 我的java学习之路 会议问题
- Android关机闹钟实现
- Servlet基础(一) Servlet基础和关键的API介绍
- pku1568 Find the Winning Move 完全极大极小搜索
- ruby--条件和循环