7

我有一个Activity用作音乐播放器的。当它启动时,一个MediaPlayer对象被初始化并启动。在布局中,我必须TextViews显示艺术家和标题。这些值(从服务器检索)可能很长,所以我添加了

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

使文本滚动。有一个奇怪的问题:当我按下“暂停”按钮时,它们TextViews正在滚动,但在播放音乐时它们不滚动。有任何想法吗?

PS 我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>
4

2 回答 2

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

希望这会帮助你。

于 2013-03-11T18:46:52.560 回答
0

你可以用你的onCreate方法试试这个。

yourTexView.setMovementMethod(new ScrollingMovementMethod());

我也面临着完全相同的问题。就这样解决了。

于 2015-01-26T20:33:26.787 回答