Существует ли способ сделать ellipsize =, “пунктирная рамка” всегда прокручивает?

Я хочу использовать эффект пунктирной рамки на TextView, но текст только прокручивается, когда TextView получает фокус. Это - проблема, потому что в моем случае, она не может.

Я использую:

  android:ellipsize="marquee"
  android:marqueeRepeatLimit="marquee_forever"

Существует ли способ иметь TextView, всегда прокручивают его текст? Я видел, что это сделано в приложении Android Market, куда название приложения прокрутит в строке заголовка, даже если это не получит фокус, но я не мог бы найти то, чтобы это было упомянутым в документах API.

90
задан Cristian 26 October 2010 в 06:09
поделиться

3 ответа

Я столкнулся с проблемой, и самое короткое решение, которое я придумал, - создать новый класс, производный от TextView. Класс должен переопределить три метода onFocusChanged , onWindowFocusChanged и isFocused , чтобы сфокусировать весь TextView.

@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;
}
62
ответ дан 24 November 2019 в 06:55
поделиться

Не знаю, нужен ли вам еще ответ, но я нашел простой способ сделать это.

Настройте анимацию так:

Animation mAnimation = new TranslateAnimation(START_POS_X, END_POS_X, 
                START_POS_Y, END_POS_Y);
mAnimation.setDuration(TICKER_DURATION); 
mAnimation.setRepeatMode(Animation.RESTART);
mAnimation.setRepeatCount(Animation.INFINITE);

START_POS_X, END_POS_X, START_POS_Y и END_POS_Y - это значения float, а TICKER_DURATION - это int, который я объявил вместе с другими константами.

Теперь вы можете применить эту анимацию к вашему TextView:

TextView tickerText = (TextView) findViewById(R.id.ticker);
tickerText.setAnimation(mAnimation);

И это все. :)

Моя анимация начинается справа за пределами экрана (300f) и заканчивается слева за пределами экрана (-300f), с продолжительностью 15s (15000).

12
ответ дан 24 November 2019 в 06:55
поделиться

Просто введите эти параметры в свой TextView. Работает :)

    android:singleLine="true" 
    android:ellipsize="marquee"
    android:marqueeRepeatLimit ="marquee_forever"
    android:scrollHorizontally="true"
    android:focusable="true"
    android:focusableInTouchMode="true" 
75
ответ дан 24 November 2019 в 06:55
поделиться
Другие вопросы по тегам:

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