Android EditText: Hecho en lugar de Enter o Word Wrap en lugar de Multi Line
Tengo una línea múltiple EditText que no permite devoluciones de línea. Ahora mismo estoy reemplazando devoluciones con algunos espacios tan pronto como haga clic en guardar. ¿Hay alguna manera de que pueda reemplazar el botón de entrar en pantalla con un botón Hecho? (Como es para una sola línea EditText)
Soy consciente de que todavía debería eliminar las devoluciones ( \r\n|\r|\n
) porque el teclado en pantalla no es la única manera de agregarlas.
- Dos líneas de texto para MenuItem
- Número de teléfono multilínea de Android edittext
- Android: alineación vertical para multilínea EditText (área de texto)
- Cómo editar cadenas multilínea en el archivo strings.xml de Android?
- Configuración de SupportActionBar subtitle multiline
Aquí está mi XML actual
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:minLines="3" android:gravity="left|top" android:inputType="textMultiLine|textAutoCorrect|textCapSentences" android:imeOptions="actionDone" />
- Detectar donde el TextView de Android insertaría un salto de línea
- Cómo implementar Multiline EditText con el botón ActionDone (sin el botón Enter)
- Diseño similar a WhatsApp para multilines EditText y botones junto a él
- Multiline EditText en los problemas de desplazamiento de RecyclerView
- Android - EditText multilínea forzada a llenar la altura
- Android EditText no Multi Line
- Desactivar la conversión de palabras en un TextView multi-línea de Android
- Crear una multilínea EditText programatically
android:inputType="textEmailAddress|textEmailSubject"
Debe configurar el tipo de entrada como dirección de correo electrónico o asunto de correo electrónico. Cualquiera de ellos le dará el resultado deseado. shouldAdvanceFocusOnEnter()
es un método privado en TextView que determina si desea introducir una nueva línea o mover el foco al siguiente campo.
Sugiero leer este artículo
Muy buen ejemplo
XML:
<EditText android:id="@+id/edittext_done" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Enter some text" android:imeOptions="actionDone" />
Clase de acción personalizada:
class DoneOnEditorActionListener implements OnEditorActionListener { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); return true; } return false; } }
Clase de actividad:
public class SampleActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sample_activity_layout); // sample_activity_layout contains our target EditText, target_edittext EditText targetEditText = (EditText)findViewById(R.id.target_edittext); targetEditText.setOnEditorActionListener(new DoneOnEditorActionListener()); // The rest of the onCreate() code } }
Si estás usando android:inputType="textMultiLine|..."
en tu XML, o usando el código Java correspondiente:
editField.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE );
Entonces la única solución para mostrar un botón "Hecho" o "Buscar" es seguir la respuesta aquí:
https://stackoverflow.com/a/5037488/1071942
O ver
Multiline EditText con etiqueta de acción SoftInput realizada en 2.3
Esto se debe a que cada vez que habilitas la opción "textMultiLine", ignora cualquier configuración de android:imeOptions="actionDone"
o android:imeActionLabel="actionDone"
, lo cual es muy extraño y confuso.
Hago esto para textos de varias líneas con una etiqueta de acción:
editText.setSingleLine(true); editText.setLines(10); editText.setHorizontallyScrolling(false); editText.setImeActionLabel(getString(R.string.ready), 0);
- Cómo configurar AlarmManager recurrente para ejecutar código diario
- Cómo mejorar el rendimiento de JS menú arrastrar en WebView en Android