2013-03-11 11 views
7

私はActivityを音楽プレーヤーとして使用しています。起動すると、MediaPlayerオブジェクトが初期化され、開始されます。レイアウトでは、アーティストとタイトルを表示するにはTextViewsがあります。これらの値(サーバーから取得)は長くなる可能性がありますので、テキストをスクロールさせるにはアンドロイド - TextViewでの自動スクロールの問題

android:ellipsize="marquee" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:scrollHorizontally="true" 

を追加してください。奇妙な問題があります。「一時停止」ボタンを押すと、TextViewsがスクロールしていますが、再生中はスクロールしません。何か案は?

P.S. Runnableを使用してを500msごとに更新すると、これに関連する可能性がありますか?ここで

は私のレイアウトです:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#000000" 
android:gravity="center_vertical" 
tools:context=".MainActivity" > 

<LinearLayout 
    android:id="@+id/main_header" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentTop="true" 
    android:orientation="horizontal" > 
</LinearLayout> 

<ImageView 
    android:id="@+id/imgCoverArt" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    android:layout_below="@+id/main_header" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="15dp" 
    android:layout_marginTop="20dp" 
    android:src="@drawable/cover_default" /> 

    <SeekBar 
    android:id="@+id/seekBarMain" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/imgCoverArt" 
    android:layout_marginLeft="20dp" 
    android:layout_marginRight="20dp" 
    android:layout_marginTop="10dp" 
    android:paddingLeft="9dp" 
    android:paddingRight="9dp" 
    android:progressDrawable="@drawable/pb" 
    android:thumb="@drawable/pbhead" /> 

<TextView 
    android:id="@+id/tvArtist" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/seekBarMain" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="35dp" 
    android:ellipsize="marquee" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:scrollHorizontally="true" 
    android:singleLine="true" 
    android:text="Large Text" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#FFFFFF" /> 

<TextView 
    android:id="@+id/tvTitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/tvArtist" 
    android:layout_centerHorizontal="true" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:ellipsize="marquee" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:scrollHorizontally="true" 
    android:singleLine="true" 
    android:text="Medium Text" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="#FFFFFF" /> 



<TextView 
    android:id="@+id/tvTimeElapsed" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/seekBarMain" 
    android:layout_alignLeft="@+id/seekBarMain" 
    android:layout_marginBottom="-10dp" 
    android:text="02:54" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:textColor="#FFFFFF" /> 

<TextView 
    android:id="@+id/tvTotalTime" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/seekBarMain" 
    android:layout_alignRight="@+id/seekBarMain" 
    android:layout_marginBottom="-10dp" 
    android:text="05:45" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:textColor="#FFFFFF" /> 

<LinearLayout 
    android:id="@+id/LinearLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="10dp" 
    android:gravity="center_horizontal" 
    android:orientation="horizontal" > 

    <Button 
     android:id="@+id/btnPrevious" 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:layout_gravity="center_vertical" 
     android:layout_marginRight="6dp" 
     android:background="@drawable/prev_btn_state" /> 

    <Button 
     android:id="@+id/btnPlay" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_gravity="center_vertical" 
     android:background="@drawable/button_play" /> 

    <Button 
     android:id="@+id/btnNext" 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:layout_gravity="center_vertical" 
     android:layout_marginLeft="3dp" 
     android:background="@drawable/next_btn_state" /> 
</LinearLayout> 

</RelativeLayout> 
+0

こんにちはDroidman、私は同じ問題に直面しています。あなたはこれに対する解決策を見つけましたか? –

答えて

2
<TextView 
     android:text="Single-line text view that scrolls automatically if the text is too long to fit in the widget" 
     android:singleLine="true" 
     android:ellipsize="marquee" 
     android:marqueeRepeatLimit ="marquee_forever" 
     android:focusable="true" 
     android:focusableInTouchMode="true" 
     android:scrollHorizontally="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

あなたのTextViewこれを追加し、

  android:focusable="true" 
      android:focusableInTouchMode="true" 

は、自動的にスクロールする必要があります。

もっと多くの例がGitHubにあります。

https://github.com/FireZenk/FireZenk-s-TickerText

https://github.com/kaeppler/ignition/blob/master/ignition-core/ignition-core-lib/src/com/github/ignition/core/widgets/ScrollingTextView.java

これはあなたを助けることを願っています。

+0

はそれを試しましたが、何も変わりませんでした。実際には、テキストは自動的にスクロールを開始しますが、再生が一時停止され、seekBarが更新されていない場合に限ります。そして、私が知る限り、ただ1つのビューだけが一瞬にフォーカスすることができますが、場合によっては自動的にスクロールするためにTextViewsを必要とします。 – Droidman

+0

https://github.com/FireZenk/FireZenk-s-TickerTextを試してみましたか? –

+0

は、ソースを見て、私はRunnableを使用しているので、私はいくつかの疑問を抱えています。私はすでに他のものをいくつか使用しています。(メモリ管理に関する考慮事項、私のプレーヤーは軽量で効率的な ")。このオプションを残しておきます、ありがとう – Droidman

0

onCreateメソッドでこれを試すことができます。

yourTexView.setMovementMethod(new ScrollingMovementMethod()); 

私はまったく同じ問題に直面しています。このように解決しました。

関連する問題