2012-09-19 11 views
8

En mi aplicación necesito mostrar uno o dos edittexts para recopilar información (e1 y e2), dependiendo de la selección que el usuario hará a través de un botón de radio. Esto se hace estableciendo el estado de visibilidad del texto de edición en GONE y funciona bien.Cambiar EditText IME_ACTION programmatically

Mi problema es cómo establecer el IME_ACTION de "hecho" a "siguiente" para cada caso, es decir:

1) Sólo E1 es visible - set IME_ACTION de E1 a DONE

2) e1 y e2 son visibles: configure IME_ACTION de e1 en NEXT e IME_ACTION de e2 en DONE.

Estoy usando android: minSdkVersion = "4" y android: targetSdkVersion = "16" y probando en un dispositivo con Android 2.2.

Aquí está mi diseño:

<EditText 
android:id="@+id/e1" 
android:layout_width="0dip" 
android:layout_height="wrap_content" 
android:inputType="text" 
android:maxLines="1" 
android:singleLine="true" 
android:imeOptions="actionDone" 
android:hint="@string/sh15" 
android:textColor="@android:color/black" 
android:textSize="@dimen/s"> 
</EditText>   
<EditText 
android:id="@+id/e2" 
android:layout_width="0dip" 
android:layout_height="wrap_content" 
android:inputType="text" 
android:maxLines="1" 
android:singleLine="true" 
android:imeOptions="actionDone" 
android:hint="@string/sh16" 
android:textColor="@android:color/black" 
android:textSize="@dimen/s"> 
</EditText> 

Aquí está mi código:

RadioGroup r= (RadioGroup) dialog.findViewById(R.id.rg); 
    r.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    { 
    public void onCheckedChanged(RadioGroup group, int checkedId) 
    { 
    switch(checkedId) 
    { 
    case R.id.rb1: //show one edittext 
     e1.setVisibility(View.VISIBLE);    
     e2.setVisibility(View.GONE); 
     e1.setImeOptions(EditorInfo.IME_ACTION_DONE); 
    break; 
    case R.id.rb2: //show two edittext 
     e1.setVisibility(View.VISIBLE); 
     e2.setVisibility(View.VISIBLE); 
     e1.setImeOptions(EditorInfo.IME_ACTION_NEXT); 
     e2.setImeOptions(EditorInfo.IME_ACTION_DONE); 
    break; 

    } 
    } 
    }); 
+0

tiene alguna solución? –

Respuesta

6
e2.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Overrid 
    public boolean onEditorAction(TextView v, int actionId,KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
       //your code  
       } 
      } 
)}; 
+0

Lo siento, no entiendo tu idea. Lo que necesito es una forma de cambiar de IME_ACTION_DONE a IME_ACTION_NEXT, dependiendo de cuántos textos de edición sean visibles. – Pedro

1

En caso de que alguien aterriza aquí: EditText.setImeOptions(EditorInfo.IME_ACTION_NEXT); y que Dios te ayude si es TouchWiz :)

también , He notado problemas cuando EditText no puede cambiar si tiene foco, así que asegúrese de cerrar el ke yboard y rescindir el foco

+0

Esto no está funcionando.timeOption dint change – Sudhasri

+0

@Sudhasri ¿Cuáles son las especificaciones del dispositivo que está probando? – AllDayAmazing

+0

intenté esto en samsung galaxy note 2. – Sudhasri

Cuestiones relacionadas