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?

<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"/> 

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.

  • Detectar evento de teclado en Android
  • ¿Cómo escuchar cualquier teclado en toda la aplicación?
  • Tipo de entrada = teclado numérico tiene punto desactivado en Galaxy Tab
  • Actividad con un teclado de software visible
  • El ajuste de coordenadas no ajusta
  • Cómo dibujar la vista en la parte superior del teclado suave como WhatsApp?
  • El pie de página sube cuando se muestra el teclado
  • Escribiendo en dos campos editados al mismo tiempo
  • ListView - mantiene el elemento específico en la vista cuando aparece el teclado virtual
  • Problemas con el teclado virtual
  • Android SearchView Ocultar el teclado al iniciar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.