2013-03-11 33 views
7

Tôi có một Activity phục vụ như một máy nghe nhạc. Khi nó bắt đầu, một đối tượng MediaPlayer được khởi tạo và bắt đầu. Trong bố cục, tôi có TextViews để hiển thị nghệ sĩ và tiêu đề. Các giá trị đó (được truy xuất từ ​​máy chủ) có thể dài nên tôi đã thêmandroid - vấn đề với tự động cuộn trong TextView

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

để cuộn văn bản. Có một vấn đề lạ: khi tôi nhấn nút "tạm dừng", TextViews đang di chuyển, nhưng trong khi nhạc đang phát thì chúng không cuộn. Bất kỳ ý tưởng?

P.S. Tôi cập nhật SeekBar mỗi 500ms bằng cách sử dụng Runnable, sự cố có thể liên quan đến vấn đề này không?

Dưới đây là cách bố trí của tôi:

 <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

Hi Droidman, tôi đang gặp phải sự cố tương tự. Bạn đã tìm thấy giải pháp cho điều này? –

Trả lời

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"/> 

thêm TextView của bạn này,

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

là cần thiết để di chuyển tự động.

Ví dụ khác có trong 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

Hy vọng điều này sẽ giúp bạn.

+0

đã thử điều đó, không có gì thay đổi. Trên thực tế, văn bản bắt đầu cuộn tự động, nhưng chỉ khi phát lại bị tạm dừng và seekBar không được cập nhật. Và theo như tôi biết, chỉ một Chế độ xem có thể được tập trung tại một thời điểm, nhưng trong một số trường hợp, tôi cần TextViews để cuộn tự động .. Bất kỳ ý tưởng nào khác? – Droidman

+0

bạn đã thử https://github.com/FireZenk/FireZenk-s-TickerText chưa? –

+0

đã xem xét nguồn, tôi đang có một số nghi ngờ vì điều này sử dụng Runnable và tôi đã sử dụng một và một vài thứ khác .. (chỉ cần cân nhắc quản lý bộ nhớ, trình phát của tôi sẽ được quảng cáo là "nhẹ và hiệu quả "). Sẽ để điều này như một lựa chọn, cảm ơn – Droidman

0

Bạn có thể thử điều này trong phương pháp onCreate.

yourTexView.setMovementMethod(new ScrollingMovementMethod()); 

Tôi cũng phải đối mặt chính xác cùng một vấn đề. Giải quyết nó theo cách này.

Các vấn đề liên quan