Comment puis-je implémenter une barre d’action personnalisée avec des boutons personnalisés dans Android?

Je veux implémenter ActionBar personnalisé qui doit ressembler à ceci:

entrer la description de l'image ici

Alors questions:

  1. Comment puis-je implémenter un bouton comme une vue personnalisée: juste une image?
  2. Comment puis-je tracer une ligne en haut de la ActionBar ?
  3. Et comment puis-je implémenter des boutons sans lignes de séparation: ajoutez des tabs sur l’ ActionBar ou quoi?

entrer la description de l'image ici

C’est à peu près la même chose que si vous souhaitiez utiliser les API ActionBar . Je ne suis pas sûr que vous puissiez placer une bande de couleur au-dessus de la ActionBar sans faire un piratage de Window bizarre, cela ne vaut pas la peine. En ce qui concerne la modification des MenuItems , vous pouvez les affiner via un style. Ce serait quelque chose comme ça, mais je ne l’ai pas testé.

   

Voici comment gonfler et append la mise en page personnalisée à votre ActionBar .

  // Inflate your custom layout final ViewGroup actionBarLayout = (ViewGroup) getLayoutInflater().inflate( R.layout.action_bar, null); // Set up your ActionBar final ActionBar actionBar = getActionBar(); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowCustomEnabled(true); actionBar.setCustomView(actionBarLayout); // You customization final int actionBarColor = getResources().getColor(R.color.action_bar); actionBar.setBackgroundDrawable(new ColorDrawable(actionBarColor)); final Button actionBarTitle = (Button) findViewById(R.id.action_bar_title); actionBarTitle.setText("Index(2)"); final Button actionBarSent = (Button) findViewById(R.id.action_bar_sent); actionBarSent.setText("Sent"); final Button actionBarStaff = (Button) findViewById(R.id.action_bar_staff); actionBarStaff.setText("Staff"); final Button actionBarLocations = (Button) findViewById(R.id.action_bar_locations); actionBarLocations.setText("HIPPA Locations"); 

Voici la mise en page personnalisée:

       

Voici la disposition de la bande de couleur: Pour l’utiliser, utilisez simplement la merge dans la mise en page que vous setContentView dans setContentView .

  

Voici les styles de Button :

    

Voici les couleurs et les dimensions que j’ai utilisées:

 #ff0d0d0d #ffffffff #99ffffff  14.0sp 16.0sp  5dp 

Si vous souhaitez le personnaliser davantage, vous pouvez ne pas utiliser le ActionBar du tout, mais je ne le recommanderais pas. Vous pouvez également envisager de lire les directives de conception Android pour avoir une meilleure idée de la manière de concevoir votre ActionBar.

Si vous décidez de ne pas utiliser ActionBar et d’utiliser votre propre mise en page à la place, vous devez vous assurer d’append des Toasts action Toasts lorsque les utilisateurs appuient sur vos “MenuItems”. Cela peut être facilement réalisé en utilisant cette liste .

1 Vous pouvez utiliser un tirable

    

2 Créez un style pour la barre d’actions et utilisez un arrière-plan personnalisé:

       

3 Style à nouveau Android: actionBarDivider

La documentation Android est très utile pour cela.

Veuillez écrire le code suivant dans le fichier menu.xml:

        

Écrivez également ce code Java dans le fichier de classe d’activité:

 public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); Toast.makeText(this, "Menus item selected: " + item.getTitle(), Toast.LENGTH_SHORT).show(); switch (item.getItemId()) { case R.id.sub_one: isItemOneSelected = true; supportInvalidateOptionsMenu(); return true; case MENU_ITEM + 1: isRemoveItem = true; supportInvalidateOptionsMenu(); return true; default: return false; } } 

C’est le moyen le plus simple d’afficher les menus dans la barre d’action.