Android barre d'action de l'élément de menu avec actionLayout ne fonctionne pas correctement
Salut, je suis en train d'élaborer une application Android. Dans mon application, je suis à l'aide de Sherlock action. J'ai défini quelques éléments de menu dans l'action bar comme dans la manière suivante
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/card_menu"
android:actionLayout="@layout/action_button"
android:showAsAction="always"
android:title="cards">
<menu>
<item
android:id="@+id/C1"
android:title="C1"/>
<item
android:id="@+id/C2"
android:title="c2"/>
<item
android:id="@+id/C3"
android:title="C3"/>
</menu>
</item>
<item
android:id="@+id/notification"
android:actionLayout="@layout/notification_icon"
android:icon="@drawable/notification"
android:showAsAction="always"
android:title="Notifications"/>
<item
android:id="@+id/filter"
android:icon="@drawable/filter"
android:showAsAction="always"
android:title="Filter"/>
</menu>
et Mon action_button ressemble :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/menu_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/spinner_ab_focused_maroon"/>
<TextView
android:id="@+id/menu_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/imageView0"
android:text="C1"/>
</RelativeLayout>
Maintenant, tout ce qui est affiché, mais mon problème est que quand je clique sur card_menu item
où je définir des sous-menus et aussi de définir les mesures de mise en page. Ce n'est pas de ces sous-menus. Mon autres éléments de menu sont travail correctement. Seulement quand j'définir les mesures de mise en page de mon article qui contient des sous-menus que je ne suis pas en mesure d'afficher le sous-menu. Si je supprime l'action de mise en page, il fonctionne très bien.
Je sais que si l'on définit l'action de mise en page pour l'élément, puis nous avons manuellement la poignée cliquez sur l'auditeur.
Je l'ai fait dans la manière suivante
final MenuItem item = menu.findItem(R.id.card_menu);
item.getActionView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onOptionsItemSelected(item);
Toast.makeText(getActivity(), "click on menu", Toast.LENGTH_SHORT).show();
}
});
Je suis en mesure de gérer à l'événement click pour cet article, mais pas en mesure de montrer déroulante sous les éléments de menu.
Comment puis-je résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Essayer ce code dans votre activité.
Assurez-vous de bien définir vos
menu.performIdentifierAction(menuFil.getItemId(),0)
retourne toujours faux, et le sous-menu ne s'affiche pas, toute aideAccepté de répondre ne fonctionne pas pour moi.
Mon sous-menu s'est comporté différentes sur différents appareils.
Sur le Motorola Moto X c'était comme ça:
Vous pouvez voir que le sous-menu est dans la mauvaise position (j'ai cliqué sur la bulle de l'icône sur la droite de l'ActionBar).
Donc à la fin j'ai trouvé la solution: utiliser PopupMenu à la place.
Code ressemble à ceci:
Et cela a fonctionné 🙂
De travail complète, code
Code:
Reportez-vous à la réponse
Si il y a un bouton dans l'action de mise en page,
afin d'obtenir le rappel de l'élément de menu, n'oubliez pas de placer le bouton