Я хочу использовать эффект пунктирной рамки на TextView, но текст только прокручивается, когда TextView получает фокус. Это - проблема, потому что в моем случае, она не может.
Я использую:
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
Существует ли способ иметь TextView, всегда прокручивают его текст? Я видел, что это сделано в приложении Android Market, куда название приложения прокрутит в строке заголовка, даже если это не получит фокус, но я не мог бы найти то, чтобы это было упомянутым в документах API.
Я столкнулся с проблемой, и самое короткое решение, которое я придумал, - создать новый класс, производный от 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;
}
Не знаю, нужен ли вам еще ответ, но я нашел простой способ сделать это.
Настройте анимацию так:
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).
Просто введите эти параметры в свой TextView. Работает :)
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:scrollHorizontally="true"
android:focusable="true"
android:focusableInTouchMode="true"