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.