2012-04-14 2 views
1

J'ai un OpenGL SurfaceView dans mon activité et je suis en utilisant le clavier pour saisir du texte (l'envoyer sur le fil). Il n'y a pas présent EditText, donc je force le clavier à afficher en utilisant:clavier paysage obscurcit vue

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 

L'activité a défini l'attribut android:windowSoftInputMode="adjustResize" et cela fonctionne très bien en mode portrait, où lorsque le clavier est affiché, la mise en page est redimensionnée (et d'où la vue de surface aussi bien). Cependant, cela ne se passe pas en mode paysage, ce qui rend une partie de la surface visible (en fait, la plus grande partie) obscurcie. La vue de surface implémente le panoramique et le zoom, donc ce serait génial si je pouvais au moins connaître la taille du clavier affiché et repositionner la surface en conséquence.

est-il un moyen de faire se comporter SoftKeyboard dans le paysage de la même manière comme il le fait en mode portrait (ce qui signifie qu'il va redimensionner ma mise en page)? Sinon, y a-t-il un moyen d'obtenir la hauteur du clavier (apparemment en plein écran)?

Répondre

1

Avec l'aide de android-developers newsgorup, j'ai été en mesure de résoudre ce problème en utilisant un remplacement sur la vue (onCreateInputConnection). Voir original thread.

@Override 
public InputConnection onCreateInputConnection(EditorInfo outAttrs) { 
    InputConnection connection = super.onCreateInputConnection(outAttrs); 
    outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_FULLSCREEN; 
    return connection; 
} 
Questions connexes