"ティッカー"(水平自動スクロールテキスト)に奇妙な問題があります。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からウィジェットを拡張したりするための属性)、同じ結果が出ました。 アイデアありがとう!
答えていただきありがとうございます(私はABS4を使用しています)、私はxmlマーキーの属性を使用せずにアニメーションコードでカスタムクラスを使用しないで私の問題を解決しました。 –