[關鍵字] Android / TextView / Marquee / setSelected / focusable / focusableInTouchMode / not working / multiple

 

這是一個很簡單好用的功能,就是將 TextView 轉變為跑馬燈。

但是當中有一些值得注意的地方,是我花了一些時間研究的。

特別寫來與大家分享一下。

 

首先,當我們只有一個 TextView 需要當跑馬燈的時候,

可以很輕易地讓它動起來:

marquee_001  

但是當我們想要用同樣的方式加入第二個跑馬燈:

marquee_002  

卻發生這樣的窘境:

marquee_003  

原因是,TextView要成為跑馬燈,必須要在Focus的狀態下,

這是Android本身的規則。而一個畫面裡面,只能有一個Focus,

所以被第一個搶走了,第二個就無法正常作用。

 

解決的方法是:

marquee_004  

marquee_006  

將這個 TextView 設定為 selected(已選取),一樣有Focus的效果,

就可以順利的動作了:

marquee_005  

我要特別說明的是,我自己遇到的狀況是,

我還有其它的 ListView、GridView 在同一個畫面裡,

所以Focus會被它們搶走。因此我特別建議就算是只用一個

跑馬燈TextView,也如法炮製在程式碼上加setSelected(true):

marquee_007  

marquee_008  

使用 Android 原生的 TextView,有個很大的缺點,

就是無法控制速度,所以有興趣的話,可以看以下兩篇深入研究:

 

1.Scroller 如何控制捲動

2.繼承並改寫 TextView 加上跑馬燈速度控制

 

arrow
arrow
    全站熱搜

    keep walking 發表在 痞客邦 留言(0) 人氣()