AndroidTextView实现跑马灯效果的方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AndroidTextView 实现跑马灯效果的⽅法
本⽂为⼤家分享⼀个⾮常简单但⼜很常⽤的控件,跑马灯状态的TextView 。
当要显⽰的⽂本长度太长,⼜不想换⾏时⽤它来
显⽰⽂本,⼀来可以完全的显⽰出⽂本,⼆来效果也挺酷,实现起来超级简单,所以,何乐不为。
先看下效果图:代码实现
TextView ⾃带了跑马灯功能,只要把它的ellipsize 属性设置为marquee 就可以了。
但有个前提,就是TextView 要处于被选中状态才能有效果,看到这,我们就很⾃然的⾃定义⼀个控件,写出以下代码:
1
2345678910111213141516171819202122
public class MarqueeTextView extends TextView { public MarqueeTextView(Context con) { super(con);
}
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
} public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); }
@Override
public boolean isFocused() {
// TODO Auto-generated method stub
if(getEditableText().equals(TruncateAt.MARQUEE)){ return true; } return super.isFocused(); }
}
重写了isFocused ⽅法,并进⾏判断,只有设置了marqueen 属性的才保持选中状态,否则它就跟普通TextView ⼀样。
接下来就可以直接使⽤了,看下布局:
1
2
3
4
567<LinearLayout xmlns:android="/apk/res/android "
xmlns:tools="/tools "
android:layout_width="match_parent"
89101112131415161718192021222324252627282930313233343536373839404142434445464748495051
52
53
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout android:id="@+id/titlebar_layout" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#39ac69" >
<LinearLayout
android:layout_width="match_parent" android:layout_height="50dp" android:background="#ffffff" android:gravity="center_vertical"
android:orientation="horizontal" >
<ImageView
android:id="@+id/home_location_iv" android:layout_width="25dp" android:layout_height="27dp" android:layout_marginLeft="10dp"
android:scaleType="fitXY"
android:src="@drawable/icon_place" />
<com.lxj.marqueetextview.MarqueeTextView
android:id="@+id/home_location_tv" android:layout_width="0dp" android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_weight="1" android:ellipsize="marquee" android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" android:text="正在定位..."
android:textColor="#39ac69"
android:textSize="18sp" />
<ImageView android:id="@+id/home_search_iv" android:layout_width="25dp" android:layout_height="27dp"
android:layout_marginRight="10dp"
android:scaleType="fitXY"
android:src="@drawable/icon_place" /> </LinearLayout></FrameLayout></LinearLayout>
要注意两点ellipsize 属性要设置为”marquee”,⾏数属性即singleLine 要设置为true 。
到此TextView 的跑马灯效果就实现了。
希望本⽂对⼤家学习Android 软件编程有所帮助。