Android学习总结——TextView跑马灯效果
2016-10-25 16:45
246 查看
Android系统中TextView实现跑马灯效果,必须具备以下几个条件:
1、android:ellipsize=”marquee”
2、TextView必须单行显示,即内容必须超出TextView大小
3、TextView要获得焦点才能滚动
实现代码:
xml:
当我们需要多个TextView实现跑马灯效果时,上面的方法就不管用了,因为它获取不到焦点了。所以就需要自定义一个TextView,继承TextView,并且重写isFocuse()方法,让它永远返回true,这样跑马灯效果就能一直的跑起来了。
接下来布局文件中使用自定义的TextView就好。具体写法就是:包名.自定义TextView
补充:
1.android:ellipsize属性:
android:ellipsize="start" 省略号在开头
android:ellipsize="middle" 省略号在中间
android:ellipsize="end" 省略号在结尾
android:ellipsize="marquee" 跑马灯显示
2.在Android Studio中,TextView单行显示:singleline语句已废弃不推荐使用,可以替换为 maxLines="1",but我换了之后跑马灯无法实现,下面来看看这两个属性的区别:
从字面意思理解,这两个都是限制Text的行数。那么singleLine="true" 和maxLine="1" 都是限制为一行,but,maxLines 是在限制高度, singleLine 是强制不让换行。从高度来讲是一样的,两者肯定都显示一行,但从换行的位置来讲就有区别了,maxLines并不会改变其换行的位置,而singleLine则会。从这个角度讲,singleLine的显示会好一些,因为如果超过一行singleLine会在一行内显示,后面加上"...",而maxlines="1" 则不会,它依然会在原来换行的位置换行,所以有时候一行不满,但是却不显示剩下的部分。
网上查资料之后,可能是maxLine与ellipsize配合失效。对于这个问题,我这里显示一行就暂时用singleLine="true"代替吧。
顺便贴上网上的一些解决办法参考:http://blog.csdn.net/itchenlin/article/details/50386396
http://blog.csdn.net/womengmengyan/article/details/52136054
http://blog.csdn.net/true100/article/details/43965311
http://blog.csdn.net/fengkuanghun/article/details/8351149
http://ck19860613.iteye.com/blog/1116858
1、android:ellipsize=”marquee”
2、TextView必须单行显示,即内容必须超出TextView大小
3、TextView要获得焦点才能滚动
实现代码:
xml:
android:singleLine="true" //单行显示 android:ellipsize="marquee" //跑马灯显示(动画横向移动) android:marqueeRepeatLimit="marquee_forever"//永久滚动 android:focusable="true" //控件是否能够获取焦点 android:focusableInTouchMode="true" //是否在触摸模式下获得焦点
当我们需要多个TextView实现跑马灯效果时,上面的方法就不管用了,因为它获取不到焦点了。所以就需要自定义一个TextView,继承TextView,并且重写isFocuse()方法,让它永远返回true,这样跑马灯效果就能一直的跑起来了。
package com.example.music.marquee; import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; /** * Created by xch on 2016/10/25. */ public class MarqueeTextView extends TextView { public MarqueeTextView(Context context) { super(context); } public MarqueeTextView(Context context, AttributeSet attrs) { super(context, attrs); } public MarqueeTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean isFocused() { return true; } }
接下来布局文件中使用自定义的TextView就好。具体写法就是:包名.自定义TextView
<com.example.music.marquee.MarqueeTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:focusable="true" android:focusableInTouchMode="true" />
补充:
1.android:ellipsize属性:
android:ellipsize="start" 省略号在开头
android:ellipsize="middle" 省略号在中间
android:ellipsize="end" 省略号在结尾
android:ellipsize="marquee" 跑马灯显示
2.在Android Studio中,TextView单行显示:singleline语句已废弃不推荐使用,可以替换为 maxLines="1",but我换了之后跑马灯无法实现,下面来看看这两个属性的区别:
从字面意思理解,这两个都是限制Text的行数。那么singleLine="true" 和maxLine="1" 都是限制为一行,but,maxLines 是在限制高度, singleLine 是强制不让换行。从高度来讲是一样的,两者肯定都显示一行,但从换行的位置来讲就有区别了,maxLines并不会改变其换行的位置,而singleLine则会。从这个角度讲,singleLine的显示会好一些,因为如果超过一行singleLine会在一行内显示,后面加上"...",而maxlines="1" 则不会,它依然会在原来换行的位置换行,所以有时候一行不满,但是却不显示剩下的部分。
网上查资料之后,可能是maxLine与ellipsize配合失效。对于这个问题,我这里显示一行就暂时用singleLine="true"代替吧。
顺便贴上网上的一些解决办法参考:http://blog.csdn.net/itchenlin/article/details/50386396
http://blog.csdn.net/womengmengyan/article/details/52136054
http://blog.csdn.net/true100/article/details/43965311
http://blog.csdn.net/fengkuanghun/article/details/8351149
http://ck19860613.iteye.com/blog/1116858
相关文章推荐
- [学习总结]3、Android---Scroller类(左右滑动效果常用的类)
- Android 4.4 后透明状态栏和导航栏效果实现(学习总结)
- Android学习总结(二)---拖动效果(Gallery)
- Android 高仿 QQ5.0 侧滑菜单效果 自定义控件来袭【学习鸿洋_视频博客笔记总结】
- Android基础学习总结(七)——简单实现新闻选项卡滑动效果(CoordinatorLayout+AppBarLayout+Toolbar+TabLayout+ViewPager大合成)
- Android画图学习总结(三)——Drawable
- Android画图学习总结(四)——Animation(上)
- Android画图学习总结(二)——Bitmap
- Android画图学习总结(三)——Drawable
- Android学习基础要点总结
- android学习总结
- Android画图学习总结(二)——Bitmap
- Android画图学习总结(一)——类的简介
- Android下ContentProvider 学习总结
- [Android1.5]TextView跑马灯效果
- android 成长 UI 学习之 Activity 透明,半透明效果的设置transparent
- Android画图学习总结(四)——Animation(中)
- Android画图学习总结(一)——类的简介
- Android画图学习总结
- Android画图学习总结(四)——Animation(上)