Android自定义TextView实现跑马灯功能
2018-07-20 来源:open-open
首先我们要实现走马灯这样一个效果,通常来说都是在TextView这个控件中来实现的,而且其中的文字一定是单行显示,如果多行显示,那走马灯效 果也就失去了存在的意义。谈到TextView的跑马灯,我们首先应该想到android:ellipsize="marquee"(start、end 属性表示前或者后省略),而如果要在view中实现跑马灯功能,就需要TextView改为Button,开启触控焦点在开启状态 android:focusableInTouchMode="true",否则是不会看到跑马灯效果的。
未用自定义TextView实现跑马灯代码:
<Button android:focusableInTouchMode="true" android:singleLine="true" android:ellipsize="marquee" android:text="未使用自定义TextView的跑马灯效果" android:textSize="18sp" android:layout_width="fill_parent" android:layout_height="wrap_content" />
下面使用自定义TextView实现跑马灯:
先编写自定义TextView
package com.zebra.mobilesafe.ui; import android.content.Context; import android.util.AttributeSet; import android.view.ViewDebug.ExportedProperty; import android.widget.TextView; /** * 自定义一个TextView,是他天生就有焦点 * @author Administrator * */ public class FocusTextView extends TextView { public FocusTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public FocusTextView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public FocusTextView(Context context) { super(context); // TODO Auto-generated constructor stub } /** * 欺骗Android系统,让当前没有焦点的判断为true,实现button效果 */ @Override @ExportedProperty(category = "focus") public boolean isFocused() { // TODO Auto-generated method stub return true; } }
然后在android的xml文件中,引用自定义实现,路径要是类的绝对路径
<com.zebra.mobilesafe.ui.FocusTextView android:singleLine="true" android:ellipsize="marquee" android:text="使用自定义TextView的跑马灯效果" android:textSize="18sp" android:layout_width="fill_parent" android:layout_height="wrap_content" />
这样就可以在TextView中实现跑马灯效果了。
标签: 代码
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐