當textview文字比較長實現水平滾動的焦點問題
由於安卓手機解析度及螢幕尺寸的多樣性,有時使用textview可能會無法顯示完全,此時就簡單地想到了讓文字實現水平滾動。水平滾動的實現其實是比較簡單的,唯一的一個難點就是如何讓textview獲得焦點,因為只有獲得焦點,設定的滾動屬性才會生效。
水平滾動屬性如下:
android:ellipsize="marquee"
android:focusable="true"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
雖然直接將textview設定focusable為true,當這個可能因為外部佈局的一些操作而導致失去焦點。
我簡單介紹一下常見的3種解決無法滾動的問題,如果仍然無法幫你解決,你可參考下面的一篇部落格:
http://blog.csdn.net/chenshi011/article/details/7792326
1.當textview所在佈局不存在焦點失去問題時,直接設定為上面的滾動屬性即可。
2.當外部存在GridView、ListView等的時候,你的不經意之間的setAdapter就可能使textview的焦點失去,自然也就無法滾動了。此時你可以在setAdapter後將setAdapter的控制元件設定setFocusable(false)。
3.當所要滾動的textview控制元件是Item佈局中的一部分時,這時一般建議對item佈局的父容器(如listview)新增屬性android:focusable="true",切記不可簡單的直接將textview設定focusable為true,否者listview可能無法實現點選。當然這種情況我們一般的操作是隻有選中的item中的textview才會滾動。此時,我們可簡單的在getview中進行判斷,將選中的item中的textview設定setSelected(true),這樣就可以滾動了。