Capitalizar la primera letra de TextView en un archivo xml de diseño de Android
Tengo un TextView en un archivo xml de diseño como este:
<TextView android:id="@+id/viewId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/string_id" />
Mi cadena se especifica así:
- Desplazamiento automático de TextView en android para introducir texto en la vista
- Cómo mostrar el texto circular con TextView en Android
- TextView.setText (Android) está causando accidentes .. alguna idea ¿por qué?
- Cómo agregar texto a editext
- ¿Cómo puedo detectar un clic en el título de ActionBar?
<string name="string_id">text</string>
¿Es posible hacer que muestre "Texto" en lugar de "texto" sin código java ?
(y sin cambiar la cadena en sí)
- SetTextcolor utilizando getCurrentTextColor ()
- Java / Android: Obtener información de usuario de Facebook desde Graph Api, mostrar en TextView
- Espaciado de párrafos con SpannableStringBuilder en TextView
- Cómo configurar el fondo de un TextView dinámicamente desde un archivo Xml
- ¿Cómo hace un Android EditText (TextView) dibujar el cursor parpadeante?
- Poner texto constante dentro de EditText que no debería ser editable - Android
- android: límite de 10 caracteres por línea TextView
- Android: TextView: elimina el espaciado y el relleno en la parte superior e inferior
No. Pero puedes crear un CustomView simple extendiendo TextView que reemplaza a setText y capitaliza la primera letra como Ahmad dijo así y la usa en tus diseños XML.
import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; public class CapitalizedTextView extends TextView { public CapitalizedTextView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void setText(CharSequence text, BufferType type) { if (text.length() > 0) { text = String.valueOf(text.charAt(0)).toUpperCase() + text.subSequence(1, text.length()); } super.setText(text, type); } }
Utilicé la respuesta de Hyrum Hammon para conseguir que todas las palabras fueran capitalizadas.
public class CapitalizedTextView extends TextView { public CapitalizedTextView( Context context, AttributeSet attrs ) { super( context, attrs ); } @Override public void setText( CharSequence c, BufferType type ) { /* Capitalize All Words */ try { c = String.valueOf( c.charAt( 0 ) ).toUpperCase() + c.subSequence( 1, c.length() ).toString().toLowerCase(); for ( int i = 0; i < c.length(); i++ ) { if ( String.valueOf( c.charAt( i ) ).contains( " " ) ) { c = c.subSequence( 0, i + 1 ) + String.valueOf( c.charAt( i + 1 ) ).toUpperCase() + c.subSequence( i + 2, c.length() ).toString().toLowerCase(); } } } catch ( Exception e ) { // String did not have more than + 2 characters after space. } super.setText( c, type ); } }