2009-10-02 80 views

Respuesta

39

Añadir androide: windowSoftInputMode = "stateAlwaysVisible" a su actividad en el archivo AndroidManifest.xml:

<activity android:name=".MainActivity" 
android:label="@string/app_name" 
android:windowSoftInputMode="stateAlwaysVisible" /> 

En mi aplicación de prueba esto muestra el teclado en el arranque de la aplicación aunque no es fijo, sino que hay puede descartarse presionando el botón Atrás.

Para asegurarse de que el teclado esté siempre visible, es posible que deba crear su propio teclado como parte de la interfaz de usuario de su aplicación. Aquí hay un tutorial para mostrarle cómo hacer esto con KeyboardView: http://www.fampennings.nl/maarten/android/09keyboard/index.htm

+0

Intenté usar el código fuente de Android y puedo arrastrar el teclado pero no estoy seguro de qué parte debo modificar para desactivarlo. Estoy mirando la clase en LatinIME.java. Intenté agregar el inputView de ese código de google a WindowManager.addView. – LittleFunny

+0

@Simon Ver mi actualización a mi respuesta. Probablemente quiera usar KeyboardView. – Intrications

10

Debe tener un EditText en su diseño y que necesite extender la clase base EditText. luego, anula el método onKeyPreIme() y devuelve verdadero. Ahora su teclado estará siempre visible y no puede ser descartado por la tecla Atrás.

Precaución: Debido a su método de onKeyPreIme() vuelve true no puede salir de su aplicación utilizando la clave de vuelta.

Ejemplo:

public class CustomEdit extends EditText { 

    public CustomEdit(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 
    @Override 
    public boolean onKeyPreIme(int keyCode, KeyEvent event) { 
     // TODO Auto-generated method stub 
     Log.e("Log", "onKeyPreIme"); 
     return true; 
     //return super.onKeyPreIme(keyCode, event); 
    } 
} 

onKeyPreIme() - Android developer

0

he encontrado una manera que funcione para mí mantener el teclado en pantalla visible después de una edición en mi myEditText campo de la clase EditText. El truco consiste en reemplazar el método onEditorAction para que vuelva true

myEditText.setOnEditorActionListener(new OnEditorActionListener() {      
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     return true; 
    }  
    }); 

o bien tienen onEditorAction retorno true sólo después de que el "Hecho" clave y haga clic (IME_ACTION_DONE) de lo contrario false

myEditText.setOnEditorActionListener(new OnEditorActionListener() {      
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if(actionId==EditorInfo.IME_ACTION_DONE){ 
     Log.i(LOG_TAG, "IME_ACTION_DONE"); 
     return true;  
     } 
     return false; 
    }  
    }); 

(véase también this answer en el método onEditorAction)

Agregando android:windowSoftInputMode="stateAlwaysVisible al archivo Manifest ayudado hacer que se muestre el teclado suave al inicio de la actividad, pero no evitó que desapareciera nuevamente cada vez que se hacía clic en la tecla "Hecho" después de una edición.

Cuestiones relacionadas