Android自定義TextView實現跑馬燈功能
首先我們要實現走馬燈這樣一個效果,通常來說都是在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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!