2011年10月29日 星期六

如何讓TextView總是在捲動

首先,要讓一個TextView捲動只要設定以下style資訊即可:

    <style name="scrolling line">

        <item name="android:singleLine">true
        <item name="android:ellipsize">marquee
        <item name="android:marqueeRepeatLimit">marquee_forever
        <item name="android:scrollHorizontally">true
        <item name="android:focusable">true
        <item name="android:focusableInTouchMode">true
    </style>


可是這有個限制,就是要在focused的狀況下才會進行捲動。
那要怎麼讓他總是在捲動?很簡單,讓他永遠被focus就好了。
自訂一個類別繼承TextView,然後override以下方法:


@Override
protected void onFocusChanged(boolean focused, int direction,
Rect previouslyFocusedRect) {
if (focused) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
}


@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
if (hasWindowFocus) {
super.onWindowFocusChanged(hasWindowFocus);
}
}

@Override
public boolean isFocused() {
return true;
}
這樣就可以讓他一直都在捲動了。
CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; height:200px; // for IE6 line-height: 1.2em; } #quote { display: block; /* fixes a strange ie margin bug */ font-family: Verdana; font-size: 10pt; overflow:auto; background: #f7f7f7 url(http://lh5.ggpht.com/_z-VThISftkI/SXUlpyfw9ZI/AAAAAAAABYY/e3GUx9_Z4TE/s288/quote-l.gif) left top no-repeat; border: 4px dotted #ccc; padding: 15px 15px 15px 31px; /*up right bottom left*/ max-height:300px; line-height: 1.2em; }