móviles - manual de programacion android pdf
Android: Edittext con el centro de gravedad no funciona en el dispositivo (6)
En Android estoy usando un texto de edición de una sola línea con la gravedad establecida en el centro. En el emulador, esto funciona muy bien, tanto la pista como el cursor parpadeante aparecen. Al probar en el dispositivo (Xperia X10), ni el texto de sugerencia ni el cursor parpadeante aparecen. El cursor parpadeante solo se muestra si ingreso algún texto en el texto de edición.
Este es mi texto de edición, ¿alguien puede ver si falta algo?
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ellipsize="end"
android:maxLines="1"
android:gravity="center"
android:layout_gravity="center"
android:hint="Some hint text"
></EditText>
</LinearLayout>
Lo que quiero:
Lo que obtengo con el código anterior (texto de edición vacío sin cursor):
Creo que deberías establecer la gravedad del diseño padre de tu EditText, centrar
EDITAR:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:id="@+id/linearLayout">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ellipsize="end"
android:maxLines="1"
android:hint="Some hint text"/>
</LinearLayout>
En lugar de agregar la gravedad en la etiqueta de estilo, agregue eso dentro de su archivo de diseño que funcionará
Finalmente encontré la solución para hacerlo funcionar. Este EditText funciona para mí: (Probado en Sony Ericsson X10 y HTC Wildfire)
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:digits="0123456789.,"
android:ellipsize="start"
android:maxLines="1"
android:gravity="center"
android:hint="Some hint text"
></EditText>
Probé una combinación de gravedades:
android:gravity="top|center_horizontal"
Mi intento anterior fue anidar EditText dentro de RelativeLayout y establecerlo en el centro, pero no se veía tan bien, de esta manera me funciona mejor.
Espero que no sea demasiado tarde. Me encontré con este problema y no sé si es igual para todos los dispositivos, pero parece que EditText
por defecto el relleno de fondo .
Mi valor de texto de EditText siempre parecía estar ligeramente por encima del centro a pesar de establecer la gravedad para ser CENTER
así que también configuré:
myEditText.setPadding(0, 0, 0, 0);
Esto me lo arregló, ahora mi EditText está perfectamente centrado: D
- En el archivo XML, agregue la gravedad CENTER_HORIZONTAL para establecer la sugerencia al centro.CURSORVISIBLE = falso para que el cursor no esté visible cuando haga clic en la primera vez
- En java, use addTextChangedListener, cuando el usuario agrega texto ese tiempo cambia la gravedad a la izquierda y también al cursor visible.
XML:
<EditText android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="EMAIL"
android:textStyle="bold"
android:gravity="center_horizontal"
android:inputType="textEmailAddress"
android:layout_margin="10dp"
android:cursorVisible="false" />
JAVA:
email.addTextChangedListener(new TextWatcher()
{
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
// position the text type in the left top corner
email.setGravity(Gravity.LEFT | Gravity.TOP);
email.setCursorVisible(true);
}
else
{
// no text entered. Center the hint text.
email.setGravity(Gravity.CENTER);
email.setCursorVisible(false);
}
}
});