我们要使用自定义TextView实现走马灯滚动效果,如图:
对于TextView
android:singleLine="true"
android:ellipsize="marquee"
设置走马灯的效果,默认是不行的。
对于Button
android:singleLine="true"
android:ellipsize="marquee"
android:focusableInTouchMode="true"
设置默认获得焦点是可以实现走马灯滚动的效果的,但是在TextView这样设置还是达不到预期效果。
所以,想要TextView实现走马灯滚动字符串的效果,需要我们自定义一个TextView天生就有焦点。
创建一个类FocusedTextView继承TextView,并复写三个构造方法和isFocused方法
在isFocused方法return中设置true
return true;这样自定义的TextView默认就有了焦点,设置到布局文件中,就可以实现走马灯效果,不用设置
android:focusableInTouchMode="true"
只需要
android:singleLine="true"
android:ellipsize="marquee"
酱紫:
<com.itheima.mobilesafe.ui.FocusedTextView
android:singleLine="true"
android:ellipsize="marquee"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="快来下载最新版本啊,下载就送好吃的啊啊啊啊!快来下载最新版本啊,下载就送好吃的啊啊啊啊!"
/>
自定义滚动的TextView就这样实现了。
activity_home.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="55dip"
android:background="#8866ff00"
android:gravity="center"
android:text="功能列表"
android:textSize="25sp" />
<com.itheima.mobilesafe.ui.FocusedTextView
android:singleLine="true"
android:ellipsize="marquee"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="快来下载最新版本啊,下载就送好吃的啊啊啊啊!快来下载最新版本啊,下载就送好吃的啊啊啊啊!"
/>
<GridView
android:verticalSpacing="15dip"
android:id="@+id/gv_home_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="35dip"
android:numColumns="3" />
</LinearLayout>
FocusedTextView.java:
package com.itheima.mobilesafe.ui;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewDebug.ExportedProperty;
import android.widget.TextView;
/**
* 自定义可以滚动的TextView
* @author Administrator
*
*/
public class FocusedTextView extends TextView {
public FocusedTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public FocusedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FocusedTextView(Context context) {
super(context);
}
/**
* 默认有焦点
*/
@Override
@ExportedProperty(category = "focus")
public boolean isFocused() {
return true;
}
}