Android - прокрутка текста в основной активности (marquee_forever) инициализируется при изменении внутреннего фрагмента - PullRequest
0 голосов
/ 28 марта 2012

У меня странная проблема с "тикером" (горизонтальная автопрокрутка текста).

Мое приложение использует фрагменты. Много их. Он основан на одном действии, с панелью действий, контейнером фрагментов и нижним тикером.

Тикер прокручивает правильно, слева направо, но каждый раз, когда я меняю фрагмент, мой тикер снова инициализируется (текущая горизонтальная прокрутка теряется, и она снова начинается с начала, но никто не говорит ему сделать это! ).

Я использую actionbarsherlock (работает как шарм! Спасибо Джейк Уортон !!) для режима совместимости.

Вот код:

ГЛАВНАЯ ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/mainRelative" >
<LinearLayout
    android:id="@+id/mainFragmentContainer"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_alignParentTop="true"
    android:layout_above="@+id/tickerView1" >
</LinearLayout>
<my.app.views.TickerView
    android:id="@+id/tickerView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">
     </my.app.views.TickerView>

</RelativeLayout>

КЛАСС БИЛЕТОВ

public class TickerView extends TextView {
private Context context;

public TickerView(Context context) {
    super(context);
    initialize();
    // TODO Auto-generated constructor stub
}

public TickerView(Context context, AttributeSet attrs) {
    super(context, attrs);
    initialize();
    // TODO Auto-generated constructor stub
}

public TickerView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    initialize();
    // TODO Auto-generated constructor stub
}

public void initialize() {
    context = getContext();
    String s;
    setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
    setMarqueeRepeatLimit(-1);
    setFocusable(true);
    setFocusableInTouchMode(true);
    setHorizontallyScrolling(true);
    setSingleLine();
    setEllipsize(TruncateAt.MARQUEE);
    setSelected(true);
            setText("sdghaskjghaskgjashgkasjghaksjhgaksjghakjshgkajsghaksjghaksjgh");

}
}


@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
    Log.d("DEBUG", "ON FOCUS CHANGED");
    if (focused)
        super.onFocusChanged(focused, direction, previouslyFocusedRect);
}

@Override
public void onWindowFocusChanged(boolean focused) {
    Log.d("DEBUG", "ON WINDOW FOCUS CHANGED" + (focused ? "FOCUSED" : "NOT FOCUSED"));
    if (focused)
        super.onWindowFocusChanged(focused);
}

@Override
public boolean isFocused() {
    return true;
}

Я также пробовал решение на основе xml (настройка файла макета с правильными атрибутами для прокрутки текста и расширение моего виджета из LinearLayout), но у меня были те же результаты. Есть идеи? спасибо!

1 Ответ

0 голосов
/ 13 апреля 2012

Я знаю, что это не ответ, но какую версию ABS вы используете? Это 3,5 или 4? В версии 3.5 вкладка отлично подходит для меня, но в версии 4 у меня возникли серьезные проблемы с ней.

Вы пробовали setSelected(false)? Возможно, это не решит вашу проблему, но ваш код выглядит хорошо.

...