En mi aplicación, cuando los usuarios hacen clic o tocan en la vista Editar texto, a veces el enfoque se establece al principio. Por ejemplo, si el texto existente es "Hola". Los usuarios quieren hacer clic en él y cambiarlo a "H1 ¿Cómo estás?" agregando el texto "¿Cómo estás?". Pero dado que el enfoque está en el principio, se convierte en "¿Cómo estás? Hola". Así que siempre quiero enfocarme a la derecha del texto cuando lo selecciono. Cómo hago esto. Por favor, hágamelo saber con un poco de muestra si es posible. Gracias por su tiempo y ayuda.¿Cómo establecer el foco a la derecha del texto en EditText para Android?
Respuesta
usted puede poner explícitamente cursor a la última posición en el texto:
EditText editText = (EditText) findViewById(R.id.textId);
int pos = editText.getText().length();
editText.setSelection(pos);
Algo más especific acerca de que pregunte, puede utilizar el siguiente código:
EditText editText = (EditText) findViewById(R.id.textId);
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
editText.setSelection(editText.getText().length());
}
}
});
la setOnFocusChangeLister método() es utilizado para detectar cuando el editText recibe el foco.
La solución anterior no está funcionando.
Aquí le doy una nueva solución para establecer el enfoque a la derecha del texto en edittext para android. Y está funcionando bien.
Mi código es:
EditText edt_ans = (EditText)findViewById(R.id.edt_answer);
edt_ans.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
// TODO Auto-generated method stub
edt_ans.setSelection(edt_ans.getText().length());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s)
{
// TODO Auto-generated method stub
}
});
feliz Codificación .... :)
su respuesta establece la posición de intercalación onTextChanged not onClick que es lo que la pregunta original estaba pidiendo. Intenta no resucitar viejas preguntas ... –
Una forma más prominente sería el caso en que no es necesario tener cuidado de establecer la selección manualmente todo el tiempo. Así que usa CustomEditText en lugar de EditText en tu diseño.
public class CustomEditText extends EditText {
public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* This is a Fix of buggy behavior of android, where after setting text using setText(...), selection remain on
* first character and not at last character.
*/
@Override
public void setText(CharSequence text, BufferType type) {
super.setText(text, type);
if (text != null && ! (text.toString().trim().length() == 0)) {
final int textLength = text.length();
if (getSelectionEnd() != textLength) {
setSelection(textLength);
}
}
}
}
setSelección no funcionaba para mí, pero esto funciona como un encanto. Funciona en afterTextChanged también.
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
edittext.requestFocus(edittext.getText().length());
}
En la nueva API u puede usar algo como esto:
//buttons setups
private void buttonsSetupForRecommendations() {
button2.setNextFocusRightId(R.id.ok_button);
button2.setNextFocusLeftId(R.id.ok_button);
button2.setNextFocusDownId(R.id.cancel_button);
button2.setNextFocusUpId(R.id.cancel_button);
button.setVisibility(View.GONE);
button2.setText(R.string.cancel_text);
button1.setText(R.string.clear_text);
button1.setNextFocusRightId(R.id.cancel_button);
button1.setNextFocusLeftId(R.id.cancel_button);
button1.setNextFocusUpId(R.id.ok_button);
button1.setNextFocusDownId(R.id.ok_button);
button1.requestFocus();
}
este trabajo con botón y otros artículos. U puede agregar este código de Java en ^^ o xml
public void ontextchangelistner(){
if(s.toString().startsWith("0")) {
if (s.length() == 2) {
if (s.toString().contains("00")) {
editText.setText(s.toString().substring(1));
int pos = editText.getText().length();
editText.setSelection(pos);
}
}
}
Si introduce primero en el tiempo cero en la edición de texto, se muestra; pero en la segunda vez presionando cero, este cero no se muestra. Espero que te ayude.
- 1. cómo cambiar el color de foco de EditText en Android
- 2. cómo quitar el texto en el foco de EditText en android?
- 3. Establecer imagen en el lado izquierdo de EditText en Android
- 4. Seleccionar texto para copiar Android EditText
- 5. Android: EditText en ListView
- 6. Texto de alineación a la derecha en Android TextView
- 7. Establecer el foco en el campo de texto Extjs
- 8. ¿Cómo descifrar el texto seleccionado en Edittext Android?
- 9. Establecer el foco en un campo de texto
- 10. ¿Cómo deshabilitar el posicionamiento del cursor y la selección de texto en EditText? (Android)
- 11. ¿Cómo obtener el texto seleccionado de edittext en android?
- 12. Establecer el foco en un texto emergente Control de entrada
- 13. ¿Cómo eliminar el subrayado del campo EditText en Android?
- 14. El valor en el texto de edición no se muestra hasta que obtiene el foco. Android
- 15. ¿Cómo establecer el foco en el botón negativo del diálogo de alerta de Android?
- 16. establecer el foco en cualquier elemento de listview en android
- 17. Alinear texto en JLabel a la derecha
- 18. Establecer inputType para un EditText?
- 19. Android getText del campo EditText
- 20. Edittext en Listview android
- 21. ¿Cómo establecer el foco en otra ventana?
- 22. Android: Cómo establecer el color del texto para los elementos de la lista en AlertDialog correctamente
- 23. cursor de texto de Android en EditText
- 24. ¿Cómo borrar el foco y quitar el teclado en Android?
- 25. ¿Cómo establecer el foco en el próximo uitextfield en iPhone?
- 26. Establecer el foco del cuadro de texto en el safari móvil
- 27. Cómo establecer la sombra del botón de Android en lugar de establecer la sombra de texto
- 28. Android TextView Alinear texto a la derecha e izquierda
- 29. Android autocompletar EditText del servidor
- 30. android EditText android: textDirection
si desea solicitar Enfoque en una vista y luego establecer la selección, no se olvide de llamar también a requestFocus(); – cV2