Android自定義TextView實現跑馬燈功能

n6xb 9年前發布 | 3K 次閱讀 Java Android

首先我們要實現走馬燈這樣一個效果,通常來說都是在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;  
    }  
}  </pre> 


然后在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中實現跑馬燈效果了。

 本文由用戶 n6xb 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!