android - solo - Mayúscula en mayúscula para EditText
propiedades edittext android (11)
Anteriormente solía ser android:capitalize="words"
, que ahora está en desuso. La alternativa recomendada es usar android:inputType="textCapWords"
Tenga en cuenta que esto solo funcionará si la configuración de mayúsculas y minúsculas del teclado del dispositivo está habilitada.
Para hacer esto programáticamente, use el siguiente método:
setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
Estoy trabajando en una pequeña aplicación de lista de tareas personal y hasta ahora todo ha funcionado bastante bien. Hay una pequeña peculiaridad que me gustaría descubrir. Cada vez que voy a agregar un nuevo elemento, tengo un cuadro de diálogo con una vista EditarTexto que se muestra en el interior. Cuando selecciono la vista Editar texto, aparece el teclado para ingresar texto, como es debido. En la mayoría de las aplicaciones, el valor predeterminado parece ser que la tecla de mayúsculas se mantiene para la primera letra ... aunque no lo hace para mi vista. Tiene que haber una forma sencilla de solucionarlo, pero he buscado la referencia repetidamente y no puedo encontrarla. Estoy pensando que tiene que haber un atributo xml para la referencia cargada por el Adaptador, pero no puedo descubrir qué es.
Aplique la siguiente línea en su EditText en XML.
android:inputType="textCapSentences|textMultiLine"
También permitirá soporte multilínea.
En su archivo XML de diseño: establezca android: inputType = "textCapSentences" en su EditText para tener el primer alfabeto de la primera palabra de cada oración como capital O android: inputType = "textCapWords" en su EditText para tener el primer alfabeto de cada palabra como mayúscula
Encontré el mismo problema, solo compartiendo lo que descubrí. Podría ayudarte a ti y a otros ...
Intente esto en su layout.add la línea de abajo en su EditText
.
android:inputType="textCapWords|textCapSentences"
funciona bien en mí ... espero que funcione también en ti ...
Establecer el tipo de entrada en XML, así como en el archivo JAVA como este,
En XML,
android: inputType = "textMultiLine | textCapSentences"
También permitirá multilínea y en archivo JAVA,
momentTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_FLAG_MULTI_LINE)
asegúrese de que la configuración de capitalización automática de su teclado esté activada .
Pruebe este Código, capitalizará el primer carácter de todas las palabras.
- establecer addTextChangedListener para la vista EditText
edt_text.addTextChangedListener (observador);
- Añadir TextWatcher
TextWatcher watcher = new TextWatcher() {
int mStart = 0;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mStart = start + count;
}
@Override
public void afterTextChanged(Editable s) {
String input = s.toString();
String capitalizedText;
if (input.length() < 1)
capitalizedText = input;
else if (input.length() > 1 && input.contains(" ")) {
String fstr = input.substring(0, input.lastIndexOf(" ") + 1);
if (fstr.length() == input.length()) {
capitalizedText = fstr;
} else {
String sstr = input.substring(input.lastIndexOf(" ") + 1);
sstr = sstr.substring(0, 1).toUpperCase() + sstr.substring(1);
capitalizedText = fstr + sstr;
}
} else
capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1);
if (!capitalizedText.equals(edt_text.getText().toString())) {
edt_text.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) {
edt_text.setSelection(mStart);
edt_text.removeTextChangedListener(this);
}
});
edt_text.setText(capitalizedText);
}
}
};
Puedo asegurarles que ambas respuestas harán mayúscula en la primera letra y no harán una sola línea de texto de edición.
Si quieres hacerlo en XMl a continuación está el código.
edittext.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
Si quieres hacerlo en la actividad / fragmento, etc. a continuación está el código
android:inputType="textCapWords|textCapSentences"
PD: Si tiene otra propiedad, también puede agregarla fácilmente con una canalización "|" símbolo, solo asegúrese de que no haya espacio en xml entre las propiedades del atributo
Solo use android:inputType="textCapWords"
en su elemento EditText.
Por ejemplo:
<EditText
android:id="@+id/txtName"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="0.7"
android:inputType="textCapWords"
android:textColorHint="#aaa"
android:hint="Name Surname"
android:textSize="12sp" />
Consulte el siguiente enlace de referencia: http://developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType
Utilice este código solo para el uso de mayúsculas en la primera letra para EditText
MainActivity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="true">
</EditText>
</RelativeLayout>
MainActivity.java
EditText et = findViewById(R.id.et);
et.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
{
if (et.getText().toString().length() == 1 && et.getTag().toString().equals("true"))
{
et.setTag("false");
et.setText(et.getText().toString().toUpperCase());
et.setSelection(et.getText().toString().length());
}
if(et.getText().toString().length() == 0)
{
et.setTag("true");
}
}
public void afterTextChanged(Editable editable) {
}
});
Estáticamente (es decir, en su archivo XML de diseño): configure android:inputType="textCapSentences"
en su EditText
.
Programáticamente: debes incluir InputType.TYPE_CLASS_TEXT
en el InputType
del EditText
, por ejemplo
EditText editor = new EditText(this);
editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
Se puede combinar con el texto y sus variaciones para solicitar la capitalización del primer carácter de cada oración.
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
o android:inputType="textCapSentences"
solo funcionará si la configuración de mayúsculas y android:inputType="textCapSentences"
teclado de su dispositivo está habilitada.