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.

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

 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

http://savagelook.com/blog/android/android-quick-tip-edittext-with-done-button-that-closes-the-keyboard

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); 
  • Android y mostrar texto de múltiples líneas en un TextView en un TableRow
  • Botones con texto multilínea hundirse bajo la línea de alineación, ¿cómo arreglarlo?
  • Android: problemas de edittext y de teclado multilínea
  • Android AlertDialog multiline EditText
  • Android multiline edittext no aumentar su altura como los tipos de usuario
  • Cómo hacer multiline edittext en android
  • Impedir introducir la clave en EditText pero todavía mostrar el texto como multi-line
  • Multiline TextView en Android?
  • Cómo centrar un texto de dos líneas en un TextView en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.