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?

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í

  • ¿Cómo conservar los datos de EditText sobre el cambio de orientación?
  • Cómo hacer un EditText seleccionable pero no editable en Android Ice Cream Sandwich?
  • Cómo hacer que el texto de EditText sea vertical (Android)
  • Obtener Null String mientras obtengo datos de EditText en android
  • Borrar texto en EditText cuando se ingresa
  • Android EditText no muestra el teclado
  • Ocultar teclado virtual en la carga de la aplicación
  • ¿Cómo agregar margen entre EditText y Soft Keyboard?
  • ¿Cómo puedo ocultar el cursor de la burbuja en EditText?
  • Editar el oyente de clave de texto
  • Accesibilidad de Android: ¿Cómo cambio el texto leído en voz alta para una Vista de Edición de Texto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.