Est-il possible d'attraper l'événement qui indique que le clavier logiciel a été affiché ou caché pour l'EditText ?
Réponses
Trop de publicités?Bonjour, j'ai utilisé la solution de rechange suivante :
Dans la mesure où ma vue de contenu est une sous-classe de LinearLayout (il pourrait s'agir de n'importe quelle autre vue ou groupe de vues), j'aurais surchargé la méthode onMeasure de la manière suivante :
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int proposedheight = MeasureSpec.getSize(heightMeasureSpec);
final int actualHeight = getHeight();
if (actualHeight > proposedheight){
// Keyboard is shown
} else {
// Keyboard is hidden
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
Cette solution de contournement m'a permis de masquer certains contrôles lorsque le clavier est affiché et de les faire réapparaître autrement.
J'espère que cela vous sera utile.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO)
{//something}
else {//something}
}
Pour le clavier virtuel, essayez d'écrire une autre constante à partir de la configuration. Par ailleurs, vous devez écrire dans le fichier Manifest.xml, dans la balise activities, l'attribut ! !!!.
<activity
android:configChanges="keyboardHidden"
>
Vous pouvez capturer cela en écrasant le fichier onConfigurationChanged
méthode de votre activité :
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
((SherlockFragmentActivity)getActivity()).getSupportActionBar().hide();
}
else if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES){
((SherlockFragmentActivity)getActivity()).getSupportActionBar().show();
}
}