EditText no acepta dígitos como entrada
La vista EditText
con id="price"
tiene un inputType="numberDecimal"
que no acepta ningún dígito pero sólo acepta un punto decimal. La otra vista de EditText
con id="store"
no tiene inputType
pero tiene dos problemas. Si la vista no tiene entrada, a continuación, introducir un dígito desde el teclado no hace nada. La única manera de que se acepte un dígito es si sigue inmediatamente una letra u otro dígito. Estoy usando el teclado Android
predeterminado. El diseño se está inflando en el método onCreateView()
de una subclase de SherlockFragment
. ¿Podría esto ser un problema con el comportamiento de vista de EditText
dentro de un SherlockFragment
? Tengo un diseño similar que se utiliza para inflar una subclase de 'SherlockFragmentActivity', y las vistas de EditText
comportan normalmente. ¿Alguien sabe qué podría estar causando este problema?
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView style="@style/ProductTextViewTitle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dp" android:text="Product Tile" /> <TableRow android:layout_width="fill_parent" android:layout_height="50dp" android:gravity="center_vertical" android:padding="5dp"> <TextView style="@style/ApolloStyleBold" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.4" android:gravity="center_vertical" android:paddingLeft="5dp" android:text="@string/price"/> <EditText android:id="@+id/price" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.6" android:background="@null" android:hint="@string/price_italic_hint" android:inputType="numberDecimal"/> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="50dp" android:gravity="center_vertical" android:padding="5dp"> <TextView style="@style/ApolloStyleBold" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.4" android:gravity="center_vertical" android:paddingLeft="5dp" android:text="@string/store_name"/> <EditText android:id="@+id/store" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.6" android:background="@null" android:hint="@string/stores_hint" /> </TableRow> </LinearLayout>
Actualizar
Cuando probé esto en Android v4.3, tiene el comportamiento desordenado (no aceptar los dígitos como entrada). Sin embargo, lo probé en Android v4.1.2, y acepta dígitos como entrada. ¿Hay algo diferente en estas dos versiones en cuanto al comportamiento de EditText?
- La entrada del teclado de hardware pierde el foco
- Mostrar error si el usuario introduce sólo espacios en EditText - Android
- EditText stucks después de animación y vivo de vuelta en el desplazamiento ...?
- Multiple EditText - especifica la ubicación del cursor
- EditText texto claro en el primer foco - Android
- ¿Cómo crear EditText con el botón de la cruz (x) en el extremo de él?
- Borrado de una multilínea EditText
- Edición de altura del cuadro EditarText android
- Cuadro de diálogo selector de fecha en editar texto haga doble clic
- Android - formato de la moneda de entrada con formato de 2 decimales
- Custom EditText no funciona después de establecer su tipo de entrada a través de setInputType ()
- ¿Valores de diálogo y edittext de Android?
- EditText - Intervalo entre el texto y la línea de EditText
Resulta que el problema no fue con el android:inputType
que se estableció, pero con un ViewGroup más arriba en la jerarquía de vista. La disposición que se utiliza para inflar el SherlockFragment
era un niño en una disposición más compleja.
A pocos padres de la jerarquía de vista había una subclase de la FrameLayout
ViewGroup llamado DragLayer
. La clase DragLayer
implementó una Interface
llamada DragController.DragListener
que tiene un método dispatchKeyEvent(KeyEvent event)
. Este método en DragLayer
utiliza la notación @Override
sin embargo no llamó a super.dispatchKeyEvent(event)
. Después de agregar esta línea de código, entonces el evento de hacer clic en un dígito en el teclado no se consumió y todo funciona ahora.
Puede utilizar el siguiente código en el precio edittext
android:inputType="number|numberDecimal" // this means number or decimal
Intenta colocar el código de abajo en tu EditText xml:
android:digits="0123456789"
Esto le indica a su EditText que acepte solamente estos dígitos. Por supuesto usted puede modificarlo a lo que usted necesita.
¿Has intentado establecer android:numeric="integer|signed|decimal"
? Como alternativa, puede establecer el KeyListener
con setKeyListener()
y forzar el EditText
para aceptar el número / punct / character.
Su código funciona bien en mi emulador. Pero hay una pequeña cosa que podría ser la respuesta a su problema, por favor, introduzca los dígitos de las teclas numéricas en la parte superior de las teclas de caracteres de su teclado. No utilice el teclado numérico del teclado de la computadora para ingresar los números. Espero que te ayude.
Prueba esto.
android:inputType="numberDecimal|numberSigned"
Creo que deberías echar un vistazo aquí