Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> TextView 自動滾動(跑馬燈)

TextView 自動滾動(跑馬燈)

編輯:初級開發

思想介紹:

TextView自帶跑馬燈的效果,需要設置一下TextVIEw的屬性,把顯示模式改為“跑馬燈”。設置滾動次數。

這些都還不夠,因為TextView的跑馬燈跑起來,需要此textVIEw得到焦點。所以要想個辦法解決一下,讓他總是滾動。

簡要步驟:

在包中新建一個類,繼承TextView。重寫isFocused方法,這個方法默認行為是,如果TextView獲得焦點,方法返回true,失去焦點則返回false。跑馬燈效果估計也是用這個方法判斷是否獲得焦點,所以把它的返回值始終設置為true。public class AlwaysMarqueeTextView extends TextVIEw {

public AlwaysMarqueeTextVIEw(Context context) {

super(context);

public AlwaysMarqueeTextVIEw(Context context, AttributeSet attrs) {

super(context, attrs);

public AlwaysMarqueeTextVIEw(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

@Override

public boolean isFocused() {

return true;

在布局XML文件中加入這麼一個AlwaysMarqueeTextVIEw,這個加入方法也是剛剛學的。

XML語言: layout.XML<com.examples.AlwaysMarqueeTextVIEw

android:id=“@+id/AMTV1″

android:layout_width=“fill_parent”

android:layout_height=“wrap_content”

android:lines=“1″

android:focusable=“true”

android:focusableInTouchMode=“true”

android:scrollHorizontally=“true”

android:marqueeRepeatLimit=“marquee_forever”

android:ellipsize=“marquee”

android:background=“@android:color/transparent”

/>

ellipsize屬性

設置當文字過長時,該控件該如何顯示。有如下值設置:”start”―C省略號顯示在開頭;”end”――省略號顯示在結尾;”middle”―-省略號顯示在中間;”marquee” ――以跑馬燈的方式顯示(動畫橫向移動)

marqueeRepeatLimit屬性

在ellipsize指定marquee的情況下,設置重復滾動的次數,當設置為marquee_forever時表示無限次。

focusable屬性

自己猜測的,應該是能否獲得焦點,同樣focusableInTouchMode應該是滑動時能否獲得焦點。

組合VIEw的問題:

XML語言: 組合VIEw< LinearLayout

XMLns:android =“http://schemas.android.com/apk/res/android”

android:orIEntation =“vertical”

android:gravity =“center_vertical”

android:background =“@drawable/f_background”

android:layout_width =“fill_parent”

android:focusable =“true”

android:layout_height =“50px” >

< TextVIEw

android:id =“@+id/info_text”

android:focusable =“true”

android:layout_width =“fill_parent”

android:layout_height =“wrap_content”

android:text =“test marquee  .. “

android:textColor =“@color/black”

android:singleLine =“true”

android:ellipsize =“marquee”

android:marqueeRepeatLimit =“3″

android:textSize =“18sp”

/>

< TextVIEw

android:id =“@+id/date_text”

android:layout_width =“fill_parent”

android:layout_height =“wrap_content”

android:layout_gravity =“bottom”

android:textColor =“@color/gray”

android:text =“2010/05/28″

android:textSize =“12sp”

/>

</ LinearLayout >

上面示例中2個TextView組合為一個View,由於設置了LinearLayout為focusable而TextView就沒法取得焦點了,這樣 這個TextView的跑馬燈效果就顯示不出來,就算你也設置TextVIEw的 android:focusable="true" 也是 沒用的. 這個時候就要使用addStatesFromChildren 這個屬性了,在LinearLayout中設置這個屬性,然後設置TextVIEw的focusable= "true" 就可以了.關於 addStatesFromChildren的說明:

Sets whether this VIEwGroup's drawable states also include its children's drawable states.

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved