0

"ティッカー"(水平自動スクロールテキスト)に奇妙な問題があります。Android - メインアクティビティのスクロールテキスト(marquee_forever)が内部フラグメントの変更時に初期化される

私のアプリケーションではフラグメントが使用されています。それらの多く。アクションバー、フラグメントコンテナ、ボトムテロップなど、1つのアクティビティに基づいています。

ティッカーは左から右にスクロールしていますが、フラグメントを変更するたびにティッカーが再び初期化されます(現在の水平スクロールが失われ、最初から再び開始されますが、 !)。

互換モードでは、私は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のCLASS

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ベースのソリューションを(試してみたが、 Textをスクロールしたり、LinearLayoutからウィジェットを拡張したりするための属性)、同じ結果が出ました。 アイデアありがとう!

答えて

0

これは答えではありませんが、どのバージョンのABSを使用していますか?それは3.5か4か? 3.5では、タブのテキストがうまくスクロールされますが、バージョン4では重大な問題があります。

setSelected(false)を試しましたか?おそらくあなたの問題は解決しませんが、コードはうまく見えます。

+0

答えていただきありがとうございます(私はABS4を使用しています)、私はxmlマーキーの属性を使用せずにアニメーションコードでカスタムクラスを使用しないで私の問題を解決しました。 –

関連する問題