Comment afficher à la fois l’icône et le titre de l’action dans ActionBar?

Je dois afficher à la fois l’ icon et le title de l’action dans ActionBar .

J’ai essayé l’option ” withText “, mais cela n’a aucun effet.

entrer la description de l'image ici

always | withText ‘ fonctionnera s’il y a suffisamment de place, sinon il ne placera que l’icône. Vous pouvez le tester sur votre téléphone en rotation.

  

Vous pouvez créer des actions avec du texte de deux manières:

1- De XML:

  

Lorsque vous getSupportMenuInflater() le menu, vous devez appeler getSupportMenuInflater() car vous utilisez ActionBarSherlock .

2- par programme:

 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem item = menu.add(Menu.NONE, ID, POSITION, TEXT); item.setIcon(R.drawable.drawable_resource_name); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT); return true; } 

Assurez-vous d’importer com.actionbarsherlock.view.Menu et com.actionbarsherlock.view.MenuItem .

Ce qui a fonctionné pour moi a été d’utiliser toujours | withText . Si vous avez beaucoup de menus, envisagez d’utiliser “ifRoom” au lieu de “toujours”.

  

La solution que je trouve consiste à utiliser une action personnalisée Mise en page: voici XML pour le menu.

     

La mise en page est

     

Cela montrera l’icône et le texte ensemble.

Pour obtenir le clickitem du fragment ou de l’activité:

 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { //super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu_details_fragment, menu); View view = menu.findItem(R.id.action_create).getActionView(); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show(); } }); } 

Si any1 en 2017 se demande comment faire cela par programmation, il y a un moyen que je ne vois pas dans les réponses

 .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

Vous pouvez append un bouton dans la barre d’outils

    

créer le fichier btn_selector.xml dans drawable

  

   

Java:

booléen privé isSelect = false;

OnClickListener pour le bouton:

 private void myClick() { if (!isSelect) { //**your code**// isSelect = true; } else {//**your code**// isSelect = false; } sort.setSelected(isSelect); } 

Certains d’entre vous ont d’excellentes réponses, mais j’ai trouvé quelque chose de plus. Si vous voulez créer un MenuItem avec un sous-menu par programme:

  @Override public boolean onCreateOptionsMenu(Menu menu) { SubMenu subMenu = menu.addSubMenu(0, Menu.NONE, 0, "Menu title"); subMenu.getItem().setIcon(R.drawable.ic_action_child); subMenu.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); subMenu.add(0, Menu.NONE, 0, "Subitem 1"); subMenu.add(0, Menu.NONE, 1, "Subitem 2"); subMenu.add(0, Menu.NONE, 2, "Subitem 3"); return true; } 

Essayez d’append un object TextView dans la barre de menus en premier et en utilisant setCompoundDrawables() pour placer l’image du côté souhaité. Cliquez sur l’activité de clic dans la vue de texte à la fin.

 MenuItem item = menu.add(Menu.NONE, R.id.menu_item_save, 10, R.ssortingng.save); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS|MenuItem.SHOW_AS_ACTION_WITH_TEXT); TextView textBtn = getTextButton(btn_title, btn_image); item.setActionView(textBtn); textBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // your selector here } }); 

Vous pouvez littéralement tout personnaliser ici:

 public TextView getTextButton (Ssortingng btn_title, Drawable btn_image) { TextView textBtn = new TextView(this); textBtn.setText(btn_title); textBtn.setTextColor(Color.WHITE); textBtn.setTextSize(18); textBtn.setTypeface(Typeface.create("sans-serif-light", Typeface.BOLD)); textBtn.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); Drawable img = btn_image; img.setBounds(0, 0, 30, 30); textBtn.setCompoundDrawables(null, null, img, null); // left,top,right,bottom. In this case icon is right to the text return textBtn; } 

Utiliser app: showAsAction = “toujours | withText”. J’utilise Android 4.1.1, mais il devrait être applicable de toute façon. Le mien ressemble à ci-dessous

  

Suivez ces étapes:

  1. Ajoutez l’instance de la barre d’action dans le final ActionBar actionBar = getActionBar(); code Java final ActionBar actionBar = getActionBar();
  2. Activez l’option d’affichage à domicile actionBar.setDisplayShowHomeEnabled(false);
  3. Ajoutez le code suivant dans le fichier manifeste android:logo=@drawable/logo and android:label="@ssortingng/actionbar_text" l’activité concernée android:logo=@drawable/logo and android:label="@ssortingng/actionbar_text"

Je crois que ceci vous aidera