2010-07-18 16 views
48

Ich habe einen Text bearbeiten, der wie folgt definiert ist.Android: Text bearbeiten Go Button

<EditText 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:maxLines="1" 
android:inputType="text" 
android:hint="@string/field_text" 
android:id="@+id/field" 
/> 

Ich mag einen benutzerdefinierten Befehl setzen, so dass, wenn jemand auf dem Geschehen/Go-Taste auf der Bildschirmtastatur klickt auf eine Schaltfläche geklickt wird oder nur die Methoden ausgeführt werden, die von der Taste ausgeführt werden. Ich denke, das hat etwas mit IME-Optionen zu tun, aber ich konnte nicht herausfinden, wie sie funktionieren. Vielen Dank im Voraus für jede Hilfe!

Antwort

117

Sie wollen eine Kombination von Android: imeOptions und setOnEditorActionListener

<EditText android:id="@+id/some_edittext" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:imeOptions="actionSend"> 
</EditText> 


some_edittext.setOnEditorActionListener(new OnEditorActionListener() { 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_SEND) { 
      some_button.performClick(); 
      return true; 
     } 
     return false; 
    } 
}); 

Offensichtlich sollten Sie actionSend auf die Aktion, die Sie wollen, ändern und aktualisieren IME_ACTION_SEND entsprechend.

+1

Ich wollte nur auf diese Antwort folgen und erwähnen, dass dies nicht unbedingt auf allen Geräten funktioniert. Zum Beispiel habe ich meinen OnKeyListener-Code geändert, um OnEditorActionListener in meiner App zu verwenden, und plötzlich hat mein HTC Evo die Aktion beendet. Sehen Sie das für mehr Info: http://stackoverflow.com/questions/3886677/imeoptions-on-htc-devices – Dan

+0

gutes Beispiel .... – AndroidDanger

+0

Aber mit diesem Beispiel können Sie nicht mehrzeiligen editext.Like ein Chat-Text erstellen, In diesem Text wird automatisch Wrodwrap hinzugefügt. –

Verwandte Themen