Эффект бегущей строки в TextView на Android?

Имею однострочный TextView с фиксированной длинной. К несчастью, для некоторых текстов, которые я туда помещаю, места слишком мало. Решил сделать что то вроде эффекта бегущей строки. Т.е. чтобы текст скроллился туда-сюда автоматически. Скорее всего это реально, так как я уже где то такое видел в готовых приложениях, но в инетах нужной информации не нашел…

кусок Layout-а описывающий TextView
<TextView
	            android:id="@+id/item_text"
	            android:layout_width="fill_parent"
	            android:layout_height="30dp"
	            android:layout_alignParentBottom="true"
	            android:layout_alignParentLeft="true"
	            android:textColor="#fff"
	            android:background="#8000"
	            android:textAppearance="?android:attr/textAppearanceLarge"
	            android:text="@string/item"/>


И кусок кода где происходят попытки этот текст «скроллить»:
TextView text=(TextView)vi.findViewById(R.id.item_text);
text.setHorizontalFadingEdgeEnabled(true);
text.setHorizontallyScrolling(true);
text.setText(Item.title);
  • Вопрос задан
  • 14909 просмотров
Решения вопроса 1
PVOID
@PVOID
Встроенная возможность TextView вас не устраивает?

android:ellipsize=«marquee»

в xml или то же самое но в Java, тут уже в справке посмотрите.

Единственое что насколько я помню текст будет бежать только если по нему тапнуть
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
NeLexa
@NeLexa
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:
<package.name.ScrollingTextView 
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:lines="1"
              android:scrollHorizontally="true"
              android:ellipsize="marquee"
              android:marqueeRepeatLimit="marquee_forever"/>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы