J'ai un lecteur de codes-barres Bluetooth connecté à la tablette Android. Le clavier matériel est désactivé dans les paramètres Android. Cela me permet à la fois de scanner les codes-barres et d'utiliser le clavier logiciel pour taper.
Lorsque je scanne un code-barres, mon activité capture toutes les touches comme prévu. Mais le clavier virtuel apparaît.
Comment empêcher le clavier virtuel d'apparaître?
J'ai essayé ce qui suit:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
ou
android:windowSoftInputMode=stateHidden
(ou stateAlwaysHidden ),
mais rien n'a fonctionné. Lorsque l'application intercepte la touche matérielle, le clavier virtuel apparaît.
3 Réponses :
Dans le manifeste, pourriez-vous essayer ce qui suit
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden">
Je vous remercie. Comme je l'ai écrit dans ma question, cela n'aide pas. Le clavier virtuel s'affiche lorsqu'un code-barres est scanné.
veuillez ajouter cet attribut à votre activité dans le manifeste:
android:windowSoftInputMode="stateHidden"
Merci, mais ceci est un double de la réponse d'Alok Gupta.
Celui-ci fonctionne pour moi:
public static void hideSoftInput(Activity activity) {
View view = activity.getCurrentFocus();
if (view == null) view = new View(activity);
InputMethodManager imm = (InputMethodManager) activity
.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
Je vous remercie. Ce code masque le clavier après son apparition. Je veux empêcher du tout l'apparition.
Essayez d'utiliser dispatchTouchEvent
@ ashishdhiman2007, ce code désactive simplement toute interaction tactile avec l'application.