Android EditText: Done statt Enter oder Word Wrap statt Multi Line

Ich habe eine mehrzeilige EditText, die keine Zeilenrücksendungen zulässt. Im Moment sende ich die Rücksendungen mit einigen Leerzeichen, sobald sie auf Speichern klicken. Gibt es irgendeine Weise, die ich ersetzen kann, auf dem Bildschirm Enter-Taste mit einem Done-Button? (Wie es für eine Zeile EditText ist)

Ich bin mir bewusst, dass ich immer wieder zurückkehren sollte ( \r\n|\r|\n ), weil die Bildschirmtastatur nicht die einzige Möglichkeit ist, sie hinzuzufügen.

Hier ist meine aktuelle XML

 <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 TextView SingleLine-Feld verbirgt Langtext
  • Verfolgen Sie nicht Text in Android TextView in der Abkürzung
  • Android Ice Cream Sandwich Edittext: Deaktivieren von Rechtschreibprüfung und Word Wrap
  • 4 Solutions collect form web for “Android EditText: Done statt Enter oder Word Wrap statt Multi Line”

     android:inputType="textEmailAddress|textEmailSubject" 

    Sie müssen den Eingabetyp als E-Mail-Adresse oder E-Mail-Betreff festlegen. Entweder man gibt dir dein gewünschtes Ergebnis. shouldAdvanceFocusOnEnter() ist eine private Methode in TextView, die bestimmt, ob eine neue Zeile eingegeben werden soll oder den Fokus auf das nächste Feld verschieben soll.

    Ich schlage vor, diesen Artikel zu lesen

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

    Wirklich gutes Beispiel

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

    Benutzerdefinierte Action Class:

     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; } } 

    Aktivitätsklasse:

     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 } } 

    Wenn du android:inputType="textMultiLine|..." in deinem XML oder mit dem entsprechenden Java Code:

     editField.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE ); 

    Dann ist die einzige Lösung, um eine "Done" oder "Search" -Taste zu zeigen, die Antwort hier zu folgen:

    https://stackoverflow.com/a/5037488/1071942

    Oder sehen

    Multiline EditText mit Done SoftInput Action Label auf 2.3

    Dies ist, weil, wenn Sie die Option "textMultiLine" aktivieren, ignoriert es jede Einstellung von android:imeOptions="actionDone" oder android:imeActionLabel="actionDone" , was sehr seltsam und verwirrend ist.

    Ich mache das für mehrzeilige Texte mit einem actionLabel:

     editText.setSingleLine(true); editText.setLines(10); editText.setHorizontallyScrolling(false); editText.setImeActionLabel(getString(R.string.ready), 0); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.