Я пытаюсь реализовать однострочный текстовый вид, который будет автоматически прокручиваться. Но я, к сожалению, не могу заставить его работать. AutoScrollTextView объявляется внутри LinearLayout (width и height = fill_parent). Класс в основном использует обработчик, который вызывает себя для прокрутки на заданную сумму. Я упростил код, чтобы показывать только текстовое представление, которое должно прокручиваться на 5 пикселей каждую секунду.
Выход журнала корректен, метод getScrollX() возвращает соответствующую позицию scrollX.
Если я не звоню requestLayout()
, ничего не получается. invalidate()
не имеет эффекта.
У кого-нибудь есть ключ?
public class AutoScrollTextView extends TextView {
public AutoScrollTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setSingleLine();
setEllipsize(null);
setText("Single-line text view that scrolls automatically if the text is too long to fit in the widget");
}
// begin to scroll the text from the original position
public void startScrolling() {
scrollHandler.sendEmptyMessage(0);
}
private Handler scrollHandler = new Handler() {
private static final int REFRESH_INTERVAL = 1000;
public void handleMessage(Message msg) {
scrollBy(5, 0);
requestLayout();
Log.debug("Scrolled to " + getScrollX() + " px");
sendEmptyMessageDelayed(0, REFRESH_INTERVAL);
}
};
}