2010-07-18 10 views
48

Tengo un texto de edición que se define de la siguiente manera.Android: botón Editar texto Ir

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

Quiero configurar un comando personalizado para que cuando alguien hace clic en el botón Done/Ir en el teclado en pantalla se hace clic en un botón o simplemente ejecutar los métodos que se ejecutan por el botón. Creo que esto tiene algo que ver con las opciones de IEM, pero no he podido averiguar cómo funcionan. ¡Gracias de antemano por cualquier ayuda!

Respuesta

117

¿Quieres una combinación de Android: imeOptions y 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; 
    } 
}); 

Obviamente se debe cambiar actionSend a la acción que desea, y la actualización de IME_ACTION_SEND correspondientemente.

+1

Solo quería dar seguimiento a esta respuesta y mencionar que esto no necesariamente funciona en todos los dispositivos. Por ejemplo, cambié mi código OnKeyListener para usar OnEditorActionListener en mi aplicación y de repente mi HTC Evo dejó de realizar la acción. Consulte esto para obtener más información: http://stackoverflow.com/questions/3886677/imeoptions-on-htc-devices – Dan

+0

buen ejemplo .... – AndroidDanger

+0

Pero al usar este ejemplo, no puede crear editext de líneas múltiples. Como un texto de chat, en este u texto agregado no se Wrodwrap automáticamente. –

Cuestiones relacionadas