2012-01-25 32 views
8

estoy tyring para mostrar un TextView que contiene dos frases y yo quiero que sean uno tras otro como esto:Android - dos frases, dos estilos, uno TextView

AAAAAA: BBBBBBBBBBBBBBBBBBBBBBB 
BBBBBBBBB 

donde A es ... la primera palabra \ parte de la oración y B ... es una segunda oración.

el tamaño de A ... & B ... no es constante.

intentaron hacer esto:

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

pero me dio:

AAAAAA: BBBBBBBBBBBBBBBBBBBBBBB 
     BBBBBBBBB 

y quiero la segunda frase (B ...) para continuar por debajo de la primera frase (A ...) debo agregar esa oración A ... & B ... tengo diferentes estilos.

el estilo de 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> 

el estilo de 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> 

alguna idea?

+1

¿Estás usando 2 textviews por algún motivo? Creo que esto se puede hacer fácilmente con un solo TextView. De esa forma, la envoltura se realizará automáticamente de la manera que usted lo desee. –

+2

echa un vistazo al uso de [SpanableString en un solo TextView] (http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring) –

+0

dijiste que el tamaño de A & B no es constante ... ¿eso significa que el valor es rt dinámico? –

Respuesta

15

Usted puede tratar de utilizar la SpannableStringBuilder de la siguiente manera:

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); 

Esto hará que la primera frase de ser resuelto, y el segundo coloreado en rojo.

+0

¿puedo agregar soporte para estilos? No mencioné que la oración A ... y B ... tienen diferentes estilos – senior

+2

Sí, puede usar [TextAppearanceSpan] (http://developer.android.com/reference/android/text/style/TextAppearanceSpan.html) como un parámetro para establecer la función para establecer el color del texto, el tamaño, el estilo y el tipo de letra. – lexmiir

+0

funciona prefecto gracias! – senior

2

Puede usar etiquetas HTML para obtener el efecto deseado con una sola vista de texto. Compruebe this y this y también this.

+0

quiero agregar diferentes estilos para cada oración, así que necesito soporte para estilos de diseño – senior

+0

¿Has revisado las etiquetas en el blog de commonsware que he mencionado. Hay muchos parámetros para cambiar el estilo del texto que desea. ¿No puedes usar para cada oración y resolver tu problema? .. Si todavía estás enfrentando el problema, no lo hagas dude en publicar lo que probó con las etiquetas html – manjusg

+0

gracias pero la respuesta de lexmiir fue en el acto – senior

1

Se puede usar HTML para mostrar el texto

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

quiero agregar diferentes estilos para cada oración, así que necesito soporte para los estilos de diseño – 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> 

Utilice esto como xml.

+0

como he mencionado A ... & B ... no son constantes y difieren – senior

+0

Luego puede establecer programáticamente el texto. – Hiral

+0

y diferentes estilos .... – senior

0

Al usar vista de texto único, solo usted podrá hacerlo. solo necesita agregar dos cadenas en una sola vista de texto.

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

quiero agregar diferentes estilos para cada oración, así que necesito ayuda para los estilos de diseño – senior

-1

has escrito la posición del segundo texto como derecha del primer texto.

android:layout_toRightOf="@id/first_text" 

así como por mi conocimiento no es posible continuar por debajo de la primera sentence.it siempre está escribiendo el segundo texto sólo en el lado derecho del primer texto.

Cuestiones relacionadas