J'essaie d'écouter les événements qui se produisent lorsque le clavier est affiché ou masqué. Est-ce possible sur Android? Je n'essaie pas de savoir si le clavier est affiché ou masqué lorsque je commence mon activité, je voudrais écouter les événements.
Essayez le code ci-dessous: -
// from the link above
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks whether a hardware keyboard is available
if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show();
} else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) {
Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show();
}
}
ou
boolean isOpened = false;
public void setListnerToRootView(){
final View activityRootView = getWindow().getDecorView().findViewById(Android.R.id.content);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
if (heightDiff > 100 ) { // 99% of the time the height diff will be due to a keyboard.
Toast.makeText(getApplicationContext(), "Gotcha!!! softKeyboardup", 0).show();
if(isOpened == false){
//Do two things, make the view top visible and the editText smaller
}
isOpened = true;
}else if(isOpened == true){
Toast.makeText(getApplicationContext(), "softkeyborad Down!!!", 0).show();
isOpened = false;
}
}
});
}
ou
pour le code ci-dessous, vous devez étendre LinearLayout.
@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);
}
voir le lien ci-dessous: -
Comment capturer l'événement "Afficher/masquer le clavier virtuel" dans Android?