2014-09-11 4 views
0

Mon application Android utilise une pédale Bluetooth pour la navigation mains libres. La pédale - un AirTurn BT105 - s'enregistre comme un clavier matériel.Android ActionBar et le clavier Bluetooth

Je peux capturer les touches envoyées par la pédale dans mon activité via dispatchKeyEvent(KeyEvent event), et tout fonctionne bien.

Cependant, même si je renvoie true lorsque j'intercepte la clé, la barre d'action répond également à l'événement key. Dans mon ActionBar, j'ai une série de ImageView s à des fins de mise en page spécialisés. Le premier ImageView est en surbrillance, comme s'il recevait juste un message ACTION_DOWN. En outre, bien que le fichier de mise en page spécifie que le ImageView ne doit pas recevoir le focus, lorsque je le regarde dans la visionneuse de hiérarchie de vue, ils sont tous déclarés comme pouvant être mis au point.

Existe-t-il un moyen d'arrêter ce comportement?

Puis-je également intercepter les événements de clé de navigation pour la fenêtre ActionBar?

Note: L'utilisation ActionBar natif dans Android 4.4.2

Répondre

1

La solution à ce "problème", a été de régler manuellement la propriété focusable lors de la construction du menu actionbar.

1 - Obtenez l'élément ActionView avec

View v = menu.findItem(itemId).getActionView(); 

2 - Après avoir fait votre configuration et activé ou désactivé, définissez les valeurs vario

v.setFocusable(false); 
v.setFocusableInTouchMode(false); 

Lorsqu'elle est activée, l'utilisateur sera toujours être capable de taper/cliquer sur le widget et il répondra toujours.

J'espère que cela aide quelqu'un, éventuellement