0

У меня возникла странная проблема с тикером (горизонтальным текстом автоматической прокрутки).Android - прокрутка текста в основной активности (marquee_forever) инициализируется при изменении внутреннего фрагмента

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

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

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

Вот код:

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

<?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> 

TICKERVIEW КЛАСС

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), но у меня были такие же результаты. Любые идеи? благодаря!

ответ

0

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

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

+0

Спасибо за ваш ответ (я использую ABS4). Я решил проблему без использования атрибута xml marquee и вместо этого использовал собственный класс с кодом анимации. –