2010-07-18 29 views
48

Ho un testo di modifica definito come segue.Android: pulsante Modifica testo Vai

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

voglio impostare un comando personalizzato in modo che quando qualcuno fa clic sul pulsante Fine/Vai sulla tastiera su schermo si fa clic su un pulsante o semplicemente eseguire i metodi che vengono eseguiti dal pulsante. Penso che questo abbia qualcosa a che fare con le opzioni ime ma non sono stato in grado di capire come funzionano. Grazie in anticipo per qualsiasi aiuto!

risposta

117

Volete una combinazione di Android: imeOptions e 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; 
    } 
}); 

Ovviamente si dovrebbe cambiare actionSend all'azione che si desidera, e aggiornare IME_ACTION_SEND corrispondentemente.

+1

Volevo solo dare seguito a questa risposta e menzionare che questo non funziona necessariamente su tutti i dispositivi. Ad esempio, ho modificato il mio codice OnKeyListener per utilizzare OnEditorActionListener nella mia app e improvvisamente il mio HTC Evo ha smesso di eseguire l'azione. Vedi questo per maggiori informazioni: http://stackoverflow.com/questions/3886677/imeoptions-on-htc-devices – Dan

+0

buon esempio .... – AndroidDanger

+0

Ma usando questo esempio non puoi creare editext multilinea. Come un testo di chat, in questo testo aggiunto non è automaticamente Wrodwrap. –

Problemi correlati