2012-10-05 4 views
14

Je souhaite placer un élément dans la barre d'action contenant uniquement du texte. J'utilise ActionBarSherlock. Comment puis-je faire ceci. L'un est de définir une icône avec un texte. Je ne préférerais pas faire ça. Est-il possible d'avoir un élément de texte à partir de mes ressources de chaîne?Objets Android ActionBar avec texte uniquement

+1

Qu'est-ce que vous avez essayé jusqu'à présent? – Dharmendra

Répondre

19

juste ne définissent pas la

android:icon 
champ

dans le menu.xml pour cet article.

+4

Cela ne fonctionne pas. Le texte n'apparaît pas dans la barre d'action. – BruceHill

+0

Vous devez mettre votre icône null: 'recueil HSC ' code' –

10

Tout compris cela, assurez-vous d'ajouter Android: showAsAction = « always »

<item 
    android:id="@+id/menu_item" 
    android:showAsAction="always" 
    android:title="@string/menu_title" /> 
+2

Il a fallu beaucoup de temps pour atteindre cette solution simple. – shehzy

+0

Prenez note, si vous utilisez la bibliothèque AppCompat, utilisez '' 'app: showAsAction =" toujours "' '' plutôt que '' 'android: showAsAction =" always "' '' –

5

Pour référence ultérieure, je trouve que l'on doit définir l'attribut showAsAction tant dans l'espace de noms http://schemas.android.com/apk/res/android et l'espace de noms http://schemas.android.com/apk/res-auto, pour assurer la compatibilité avec différentes versions d'Android. Ainsi, votre fichier menu.xml devrait ressembler à:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     tools:context="net.taptools.android.sportshistory.PlayerProfileActivity" > 
<item android:id="@+id/action_settings" 
    android:title="Statistics" 
    app:showAsAction="always" 
    android:showAsAction="always"/> 
</menu> 
0

si vous voulez qu'il soit un bouton, vous pouvez créer un menu:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     tools:context="net.taptools.android.sportshistory.PlayerProfileActivity" > 
<item android:id="@+id/action_settings" 
    android:title="Statistics" 
    app:showAsAction="always" 
    android:showAsAction="always"/> 
</menu> 

Mais dans le cas où vous vouliez seulement TextView vous pouvez utiliser :

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    TextView tv = new TextView(this); 
      tv.setText(getString(R.string.matchmacking)+" "); 
      tv.setTextColor(getResources().getColor(R.color.WHITE)); 
      tv.setOnClickListener(this); 
      tv.setPadding(5, 0, 5, 0); 
      tv.setTypeface(null, Typeface.BOLD); 
      tv.setTextSize(14); 
      menu.add(0, FILTER_ID, 1, R.string.matchmacking).setActionView(tv).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
} 

Ceci crée simplement un TextView.