我在应用程序中使用了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 但没有成功)
答案 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之间有什么区别。