I’m relatively new to Android programming, and I need a control that holds text and scrolls automatically. Now, I know about the “marquee” in the TextView control and it works fine for what it’s intended, but that approach has two problems.
1) I need the text to scroll regardless of its length, i.e. if the text is only “Hello”, and the control is set to match parents width, it needs to scroll.
2) The control needs to respond to user scroll – by flicking/dragging it left/right, the text should also scroll.
And naturally, when the text is “gone” to the left side, it should reappear on the right side and continue scrolling. For now, it should be a single line text.
Does anything like that exist, and if not, what would be the best approach guidelines to implementing it?
I ended up extending the default TextView, and pulling out Marquee class from TextView source. From there it’s easy to modify the Marquee class so that it starts/stops when needed, and no longer requires the TextView to be selected (if that requirement is necessary).
To implement slide by gesture, the base class implements OnGestureListener and in
onScroll(...)I update the offset in Marquee class, so when the View is drawn the next time it applies the new scroll offset.And finally, to actually scroll by the amount needed, in the constructor I set the custom scroller, and in onDraw apply the scroll.
The important parts of code: