2012-01-25 15 views
8

sto tyring per visualizzare un TextView che contiene due frasi e voglio loro di essere uno dopo l'altro in questo modo:Android - due frasi, due stili, uno TextView

AAAAAA: BBBBBBBBBBBBBBBBBBBBBBB 
BBBBBBBBB 

dove A è ... la prima parola \ parte della frase e B ... è una seconda frase.

la dimensione di A ... & B ... non è costante.

provato a fare questo:

<RelativeLayout 
     style="@style/f13" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
     <TextView 
      android:id="@+id/first_text" 
      android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="AAAAAA: " />  
    <TextView 
      style="@style/f15" 
      android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" 
     android:layout_toRightOf="@id/first_text" />     
    </RelativeLayout> 

ma ho ottenuto:

AAAAAA: BBBBBBBBBBBBBBBBBBBBBBB 
     BBBBBBBBB 

e voglio che la seconda frase (B ...) per continuare al di sotto della prima frase (A ...) dovrei aggiungere quella frase A ... & B ... hanno stili diversi.

lo stile per A:

<style 
    name="f13"> 
    <item name="android:typeface">sans</item> 
    <item name="android:textSize">15dp</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:textColor">@color/grey_dark_emperor</item> 
</style> 

lo stile per B:

<style 
    name="f15"> 
    <item name="android:typeface">sans</item> 
    <item name="android:textSize">17dp</item> 
    <item name="android:textStyle">normal</item> 
    <item name="android:textColor">@color/grey_dark_emperor</item> 
</style> 

ogni pensiero?

+1

Stai utilizzando 2 visualizzazioni di testo per un motivo? Penso che questo possa essere fatto facilmente con un singolo TextView. In questo modo il wrapping verrà eseguito automaticamente nel modo desiderato. –

+2

dai un'occhiata a [SpanableString in una singola TextView] (http://www.chrisumbel.com/article/android_textview_rich_text_spannablestringing) –

+0

hai detto che le dimensioni di A & B non sono costanti .. significa che il valore è dinamico rt? –

risposta

15

Si può provare a utilizzare la SpannableStringBuilder come segue:

String firstString = "AAAAAA: "; 
String secondString = "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"; 

SpannableStringBuilder stringBuilder = new SpannableStringBuilder(firstString + secondString); 
stringBuilder.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, firstString.length(), 
      Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
stringBuilder.setSpan(new ForegroundColorSpan(Color.rgb(255, 0, 0)), firstString.length() + 1, 
      firstString.length() + secondString.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
textView.setText(stringBuilder); 

Questo renderà la prima frase di essere audaci, e la seconda colorato in rosso.

+0

posso aggiungere il supporto per gli stili? non ho menzionato la frase A ... e B ... hanno stili diversi – senior

+2

Sì, puoi usare [TextAppearanceSpan] (http://developer.android.com/reference/android/text/style/TextAppearanceSpan.html) come parametro per impostare la funzione setpan per impostare il colore del testo, la dimensione, lo stile e il carattere tipografico. – lexmiir

+0

funziona prefetto grazie! – senior

2

È possibile utilizzare i tag HTML per ottenere l'effetto desiderato con una singola visualizzazione di testo. Controllare this e this e anche this.

+0

voglio aggiungere diversi stili per ogni frase quindi ho bisogno di supporto per gli stili di layout – senior

+0

Hai controllato i tag nel blog di Commonsware che avevo menzionato. Ci sono molti parametri per cambiare lo stile del testo che vuoi. Non puoi usare per ogni frase e risolvere il tuo problema? .. Se stai ancora affrontando il problema, non esita a postare ciò che hai provato con i tag html – manjusg

+0

grazie ma la risposta di Lexmiir era giusta sul posto – senior

1

Si potrebbe utilizzare HTML per visualizzare il testo

myTextView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>")); 
+0

voglio aggiungere stili diversi per ogni frase quindi ho bisogno di supporto per gli stili di layout – senior

0
<RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    <TextView 
      android:id="@+id/first_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="AAAAAA: BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" />     
</RelativeLayout> 

Utilizzare questo come xml.

+0

come già detto A ... & B ... non sono costanti e differiscono – senior

+0

Quindi è possibile impostare il testo in modo programmatico. – Hiral

+0

e diversi stili .... – senior

0

Mediante la sola visualizzazione di testo, sarete in grado di farlo. hai solo bisogno di aggiungere due stringhe in una singola textview.

textview.setText(first_text+":"+second_text); 
+0

voglio aggiungere diversi stili per ogni frase quindi ho bisogno di supporto per gli stili di layout – senior

-1

avete scritto la posizione del secondo testo come diritto del primo testo.

android:layout_toRightOf="@id/first_text" 

così come per la mia conoscenza non è possibile continuare al di sotto della prima sentence.it è sempre scrivendo il secondo testo solo nel lato destro del primo testo.

Problemi correlati