如何在Android-wheel中获取文本到Marquee?

时间:2011-09-01 09:58:02

标签: android marquee

我在应用程序中使用了android-wheel http://code.google.com/p/android-wheel/

我的屏幕上有三个并排的轮子。当轮子中的文字比轮子宽时,我希望它滚动到侧面(按照选框)

我已经实施了AbstractWheelTextAdapter并为项目创建了自定义ScrollingTextView,如下所示:(ScrollingTextView是为了解决Marquee只在项目有焦点时才能正常工作的问题)

public class ScrollingTextView extends TextView {


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

    super(context, attrs, defStyle);

}



public ScrollingTextView(Context context, AttributeSet attrs) {

    super(context, attrs);

}



public ScrollingTextView(Context context) {

    super(context);

}

@Override

protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {

    if(focused)

        super.onFocusChanged(focused, direction, previouslyFocusedRect);

}

@Override

public void onWindowFocusChanged(boolean focused) {

    if(focused)

        super.onWindowFocusChanged(focused);

}

@Override

public boolean isFocused() {

    return true;

}

}

和xml:

<com.test.app.ScrollingTextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id = "@+id/wheel_text"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:inputType="text"
android:scrollHorizontally="true"
android:textColor="#F000"
android:lines="1"
android:focusable="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"/>

有没有人能够让这个工作?

(我也尝试在AbstractWheelTextAdapter的代码中设置 Ellipse 但没有成功)

1 个答案:

答案 0 :(得分:0)

因为WheelView没有使自己无效。在Activity中,添加代码:

Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        wheelview.invalidate();
        sendEmptyMessageDelayed(0, 0);
        }
};  
handler.sendEmptyMessage(0);

然后TextView Marquee效果工作。但是当您滚动WheelView时,TextView字符串从开始重置。

我在ListView中尝试了TextView Marquee效果,Marquee效果正常。我将检查ListView源代码,看看ListView和WheelView之间有什么区别。