Motorola Bionic – tipo de entrada textPersonName y textCapWords no funcionan
No puedo obtener un campo EditText en mi aplicación para trabajar realmente con inputType = "textCapWords" o "textPersonName" en un Droid Bionic. Otros teléfonos que he probado parecen estar bien. Ninguno de los tipos de entrada de mayúsculas parece funcionar. También he probado el atributo de mayúsculas obsoletas. Y establecer las cosas programáticamente.
¿Alguien más ha encontrado este problema? ¿Alguna sugerencia aparte de implementar funcionalidad personalizada usando TextWatcher?
- ¿Cómo ocultar el teclado suave desde el interior de un fragmento?
- Android Cómo ajustar el diseño en el modo de pantalla completa cuando el teclado virtual está visible
- Obtener la lista de idiomas compatibles con el teclado de Android
- Android: muestra el contenido de la lista
- Espacio vacío cuando vuelvo a Actividad (Soft Keyboard forzado)
<EditText android:id="@+id/last_name_editor" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/last_name" android:inputType="textCapWords"/>
- ¿Puedo tener "adjustResize" comportamiento de teclado suave y una barra de herramientas detrás de la barra de estado al mismo tiempo?
- Sube un diseño con el teclado suave pero guarda uno en la parte inferior
- ¿Cómo comprobar la visibilidad del teclado del software en Android?
- ¿Cómo puedo utilizar una fuente personalizada en el área de entrada de un método de entrada?
- Cómo deshabilitar el teclado virtual en WebView
- ¿Puedo usar el teclado virtual sin un EditarTexto?
- Añadir vista sobre teclado android
- Android: ScrollView no se desplaza con el teclado fuera
Puede comprobar la configuración del teclado del dispositivo. En algunos dispositivos (Samsung Nota 2) que dan auto capitalización comprobar / UN-check opción.
Aquí está la manera de TextWatcher, para cualquier persona que sigue enfrentando este problema:
TextWatcher capitalizeTW = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { try{ String inputString = ""+YOUR_TEXT_VIEW.getText().toString(); String firstLetterCapString = WordUtils.capitalize(inputString); if(!firstLetterCapString.equals(""+YOUR_TEXT_VIEW.getText().toString())){ YOUR_TEXT_VIEW.setText(""+firstLetterCapString); YOUR_TEXT_VIEW.setSelection(YOUR_TEXT_VIEW.getText().length()); } }catch (Exception e){ e.printStackTrace(); } } @Override public void afterTextChanged(Editable editable) { } };
// Agregar TextWatcher a su TextView
YOUR_TEXT_VIEW.addTextChangedListener(capitalizeTW);
// WordUtils
public final class WordUtils { private WordUtils(){ } public static String capitalize(String str) { return capitalize(str, (char[]) null); } public static String capitalize(String str, char... delimiters) { int delimLen = delimiters == null ? -1 : delimiters.length; if (!TextUtils.isEmpty(str) && delimLen != 0) { char[] buffer = str.toCharArray(); boolean capitalizeNext = true; for (int i = 0; i < buffer.length; ++i) { char ch = buffer[i]; if (isDelimiter(ch, delimiters)) { capitalizeNext = true; } else if (capitalizeNext) { buffer[i] = Character.toTitleCase(ch); capitalizeNext = false; } } return new String(buffer); } else { return str; } } private static boolean isDelimiter(char ch, char[] delimiters) { if (delimiters == null) { return Character.isWhitespace(ch); } else { char[] arr$ = delimiters; int len$ = delimiters.length; for (int i$ = 0; i$ < len$; ++i$) { char delimiter = arr$[i$]; if (ch == delimiter) { return true; } } return false; } } }
Espero que esto ayude.
O este es un problema específico para mí, o nadie parece tener una solución. Fuimos con una solución de TextWatcher. Cambiará esto si alguien más viene con una solución.
- Intentos extras que faltan cuando comenzó la actividad
- Cómo compartir un objeto entre dos subprocesos (sincronización de subprocesos)?