编写不易,如有转载,请声明出处:http://blog.youkuaiyun.com/zxc514257857/article/details/70184606
实现原理
自定义一个MarqueeTextView类,继承Text,将MarqueeTextView强制设置为被选中状态,然后一直进行滚动。
Demo展示图片
实现代码如下
//布局代码
//(layout)activity_main.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.test.marqueetextview.activity.MainActivity">
<TextView
android:id="@+id/title1"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:"/>
<com.test.marqueetextview.view.MarqueeTextView
android:id="@+id/name1"
android:paddingTop="10dp"
android:layout_toRightOf="@+id/title1"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:text="尼古拉斯赵四"/>
<TextView
android:id="@+id/title2"
android:layout_marginTop="10dp"
android:layout_below="@+id/title1"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:"/>
<com.test.marqueetextview.view.MarqueeTextView
android:id="@+id/name2"
android:layout_marginTop="10dp"
android:paddingTop="10dp"
android:layout_below="@+id/name1"
android:layout_toRightOf="@+id/title2"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:text="郭达斯坦森"/>
</RelativeLayout>
-------------------------------------------------------------------
//自定义控件代码
//(view)MarqueeTextView
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* 具有跑马灯效果的TextView
* 实际上就是将使用这个MarqueeTextView控件的全部设置为强制被选中
*/
public class MarqueeTextView extends TextView{
public MarqueeTextView(Context context) {
super(context);
}
public MarqueeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**强制被选中*/
@Override
public boolean isFocused() {
return true;
}
}
-------------------------------------------------------------------
//activity代码
//(activity)MainActivity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.test.marqueetextview.R;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Demo下载请移步:http://download.youkuaiyun.com/detail/zxc514257857/9815066
----------因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!----------