"티커"(수평 자동 스크롤 텍스트)에 이상한 문제가 있습니다.안드로이드 - 내부 액자가 바뀌면 주요 활동 (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에서 내 위젯을 확장),하지만 난 같은 결과가 발생했습니다. 아이디어가 있으십니까? 감사!
대답 해 주셔서 감사합니다. (저는 ABS4를 사용하고 있습니다.) xml marquee 속성을 사용하지 않고 애니메이션 코드가있는 사용자 정의 클래스를 사용하지 않고 문제를 해결했습니다. –