2013-03-11 2 views
7

У меня есть Activity, который служит в качестве музыкального плеера. Когда он запускается, объект MediaPlayer инициализируется и запускается. В макете у меня есть TextViews, чтобы отобразить исполнителя и название. Эти значения (полученные с сервера) могут быть длинными, поэтому я добавилandroid - проблема с автоматической прокруткой в ​​TextView

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

чтобы сделать прокрутку текста. Возникает странная проблема: когда я нажимаю кнопку «пауза», прокручиваются TextViews, но во время воспроизведения музыки они не прокручиваются. Есть идеи?

P.S. Я обновляю SeekBar каждые 500 мс, используя Runnable, может ли проблема быть связана с этим?

Вот мой макет:

 <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 не обновляется. И насколько я знаю, только один вид может быть сфокусирован в один момент времени, но в некоторых случаях мне нужно, чтобы TextViews автоматически прокручивались. Любые другие идеи? – Droidman

+0

Вы пробовали https://github.com/FireZenk/FireZenk-s-TickerText? –

+0

посмотрел на источник, у меня есть некоторые сомнения, так как вещь использует Runnable, и я уже использую одну и несколько других вещей .. (только соображения управления памятью, мой игрок будет рекламироваться как «легкий и эффективный "). Оставлю это как вариант, спасибо – Droidman

0

Вы можете попробовать это у вас onCreate метод.

yourTexView.setMovementMethod(new ScrollingMovementMethod()); 

У меня также возникла такая же проблема. Решил это так.

Смежные вопросы