2012-06-25 36 views
5

Ho creato una serie di schede con larghezza fissa di 100 px. Una scheda contiene un'immagine con del testo sotto di essa. Se il testo è troppo lungo per adattarsi, lo voglio scorrere automaticamente. Voglio solo una linea. Ho provato quanto segue ma non ha funzionato. Sto usando Android 2.3:Android: testo a scorrimento automatico in TextView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_marginRight="3dp" 
    android:layout_marginTop="3dp" 
    android:background="#ff737373" 
    android:gravity="center" 
    android:minWidth="64dp" 
    android:orientation="vertical" 
    android:padding="3dp" > 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:tag="tabImage" > 
    </ImageView> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ellipsize="marquee" 
     android:marqueeRepeatLimit="marquee_forever" 
     android:focusable="true" 
     android:focusableInTouchMode="true" 
     android:scrollHorizontally="true" 
     android:singleLine="true" 
     android:maxWidth="100px" 
     android:tag="tabCaption" 
     android:textColor="#ffd9d9d9" 
     android:textSize="16sp" /> 

</LinearLayout> 

Qualche idea sul perché questo non funziona? Ho trovato la soluzione da un altro post e l'utente ha indicato che funziona.

risposta

11

Nella vostra attività si deve aggiungere, se si desidera tendone sul testo

TextView tv=(TextView)findViewById(R.id.textview1); 
    tv.setSelected(true); 
+0

Dopo questo distacco, ho fatto un po 'di ricerca e sono imbattuto in questo pure. Grazie mille comunque! – AndroidDev

0
<TextView 

     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:singleLine="true" 
     android:gravity="center" 
     android:ellipsize="marquee" 
     android:focusable="true" 
     android:focusableInTouchMode="true" 
     android:marqueeRepeatLimit="marquee_forever" 
     android:text="Auto text scroller" 
     android:textSize="50sp" 
     /> 
0

essere consapevoli che se il testo è più piccolo di lunghezza rispetto alla larghezza dei limiti definiti per esso NON sarà scrollato. In questo caso potresti voler estendere il testo con se stesso qualcosa come:

-. . . . .

String charsInBreak = " "; 
while (bounds.width() < this.m_width) 
{ 
    m_text = (m_text + charsInBreak + m_text); 
    paint.getTextBounds(m_text, 0, m_text.length(), bounds); 
} 

E se si desidera che il testo Marquee per sempre:

m_textView.setMarqueeRepeatLimit(-1); 
Problemi correlati