2011-09-27 58 views
7

Tengo un TextView. Estoy tratando de escribir en mayúscula la primera letra de cada palabra.android: capitalize no funciona

Aquí está la Vista de Texto:

<TextView 
      android:text="TextView" 
      android:id="@+id/textView1" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_alignParentRight="true" 
      android:textSize="30dip" 
      android:textStyle="bold" 
      android:layout_marginRight="5dip" 
      android:ellipsize="end" 
      android:capitalize="words"> 
     </TextView> 

Así es como estoy añadiendo el texto:

TextView titleView = (TextView) findViewById(R.id.textView1); 
    titleView.setText(section.replace("_", " ")); 

no puedo agregar texto de forma dinámica y esperar que capitalizar las palabras? ¿Hay otro rasgo que interfiere con android:capitalize? ¿Está roto el android:capitalize?

Gracias por sus respuestas.

Respuesta

13

capitalize es básicamente un KeyListener que puede establecer en XML, por lo que solo se aplica al ingreso de texto por parte del usuario. As the documentation states (el énfasis es mío):

Si está establecido, especifica que este TextView tiene un método de entrada de texto y debe sacar provecho de forma automática lo que el usuario.

Hay una pregunta relacionada en how to capitalize the first letter of every word in Java que tiene algunas respuestas útiles.

+0

Guau, casi la misma respuesta ... –

+0

Gracias, te marqué como la respuesta correcta. – emachine

1

Ésta es una respuesta tardía pero creo que podría ayudar a alguien ...

Si se siente cómodo con capitilizing el texto dinámico en el código java entonces usted puede utilizar:

textView.setText(text.toUpperCase()); 
-1

androide: capitalizar está en desuso en el ICS, así que supongo que debe ser mejor que hacerlo en el código (es decir, con String.toUpperCase())

Otro intento podría ser

android:inputType="textCapWords" 

pero creo que requeriría un EditText para funcionar.

No sé si este es el motivo de su código, ¿A qué versión apunta?

13

Si usted está apuntando Nivel API 14 y por encima, se debe utilizar

androide: textAllCaps = "true"

De lo contrario, tendrá que implementar este comportamiento sí mismo.

+0

Gracias. Ahora sé por qué no puedo hacer que esto funcione en API Nivel 8. :) –

0

@ La respuesta de Shine es correcta, no sé por qué no votó. Android: capitalizar desfasada y en su API 3. Por desgracia los documentos TextView no indican esto, la prueba está enterrado en R.attr:

R.attr

estudio Android también falla para informarle de que este atributo está en desuso. ¡Otros 30 minutos que nunca recuperaré, gracias a Google!

0

android:capitalize ahora está en desuso.

En lugar de utilizar android:capitalize="words", debe considerar el uso de android:inputType="textCapWords".

Según sus necesidades, también puede usar valores múltiples, como android:inputType="textCapWords|textPersonName".