0

"티커"(수평 자동 스크롤 텍스트)에 이상한 문제가 있습니다.안드로이드 - 내부 액자가 바뀌면 주요 활동 (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> 

나는 또한 올바른와 레이아웃 파일을 설정하는 XML 기반 솔루션을 (시도했습니다

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; 
} 

TICKERVIEW의 클래스 스크롤 텍스트에 대한 속성 및 LinearLayout에서 내 위젯을 확장),하지만 난 같은 결과가 발생했습니다. 아이디어가 있으십니까? 감사!

답변

0

나는 대답이 아니라는 것을 알고 있지만 어떤 버전의 ABS를 사용하고 있습니까? 3.5 또는 4입니까? 탭 텍스트는 3.5에서 나에게 잘 스크롤되지만 버전 4에서는 심각한 문제가 있습니다.

setSelected(false)을 사용해 보셨습니까? 아마 문제는 해결되지 않지만 코드는 정상적으로 보입니다.

+0

대답 해 주셔서 감사합니다. (저는 ABS4를 사용하고 있습니다.) xml marquee 속성을 사용하지 않고 애니메이션 코드가있는 사용자 정의 클래스를 사용하지 않고 문제를 해결했습니다. –