软件编程
位置:首页>> 软件编程>> Android编程>> android TextView实现跑马灯效果

android TextView实现跑马灯效果

作者:段合江  发布时间:2023-07-27 16:35:31 

标签:android,TextView,跑马灯

本文实例为大家分享了android TextView跑马灯效果的具体代码,供大家参考,具体内容如下

一、要点

设置四个属性

android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"

直接在xml中使用


<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:singleLine="true"
 android:ellipsize="marquee"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:text="人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时向无形的敌人作战。" />

注意:singleLine属性 不能换成 maxlLines 

二、复杂布局

在复杂的布局中可能不会实现跑马灯效果。例如如下布局中,就只有第一个TextView会有跑马灯效果


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/tv1"
 android:singleLine="true"
 android:ellipsize="marquee"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:text="人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时向无形的敌人作战。" />
<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@+id/tv1"
 android:layout_marginTop="10dp"
 android:singleLine="true"
 android:ellipsize="marquee"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:text="人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时向无形的敌人作战。" />

</RelativeLayout>

这时候就需要自定义View,实现跑马灯效果

自定义MarQueeTextView extents TextView  重写isFocused()方法,返回true


public class MarqueeText extends TextView {
public MarqueeText(Context context) {
 super(context);
}

public MarqueeText(Context context, @Nullable AttributeSet attrs) {
 super(context, attrs);
}

public MarqueeText(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
 super(context, attrs, defStyleAttr);
}

@Override
public boolean isFocused() {
 return true;
}
}

布局中使用


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.example.dhj.marqueedemo.View.MarqueeText
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/tv1"
 android:singleLine="true"
 android:ellipsize="marquee"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:text="人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时向无形的敌人作战。" />
<com.example.dhj.marqueedemo.View.MarqueeText
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@+id/tv1"
 android:layout_marginTop="10dp"
 android:singleLine="true"
 android:ellipsize="marquee"
 android:focusable="true"
 android:focusableInTouchMode="true"
 android:text="人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时向无形的敌人作战。" />

</RelativeLayout>
0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com