1. 程式人生 > >解決二貨 Android TextView走馬燈不能滾動問題

解決二貨 Android TextView走馬燈不能滾動問題

Android中需要實現走馬燈的效果, 網上很多都是用執行緒結合Textview實現的效果,我是很鄙視這種做法的,為一個走馬燈,還要單起一個執行緒。最好還是用純TextView來實現,在TextView中,可以設定marqueen和focusable以及focusableInTouchMode, 但是一圈試下來基本上都沒有什麼效果,所以說麼, 這就是個二貨的控制元件。也有同學的解決辦法是設定TextView的上層focuse,然後在程式碼中在設定setHorizontallyScrolling(true)和setFocusable(true); 但是這兩個方法在多層佈局巢狀後,也沒有作用,這個是我自己試到的情況,也許不準確,你也別噴!。還有一點需要注意的是,滾動的內容和TextView的寬度有一定的關係,有時候內容的長度小於Textview的寬度時,也不能解決。

  究其原因,貌似TextView在沒有焦點的時候,是不滾動的, 這是個二貨的設計,個人來講,我是不願意在程式碼中去設定焦點的,算是有點小潔癖, 認為佈局的東西,就應該儘量在佈局中實現。最後找了一大堆TextView的屬性,都寫上去,最主要的是給TextView設定焦點。這樣才解決問題,下面貼上程式碼。

<TextView
                    android:id="@+id/notices"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:ellipsize="marquee"
                    android:focusable="true"
                    android:focusableInTouchMode="true"
                    android:fadingEdge="horizontal"
                    android:clickable="true"
                    android:duplicateParentState="true"
                    android:marqueeRepeatLimit="marquee_forever"
                    android:scrollHorizontally="true"
                    android:singleLine="true"
                    android:text="@string/notice">
                    <requestFocus
                            android:duplicateParentState="true"
                            android:focusable="true"
                            android:focusableInTouchMode="true" />                    
                    </TextView>