243 votes

Comment modifier le titre et l'icône de la barre d'action Android ?

J'essaie de faire certaines choses sur la barre d'action dans Android.

J'ai déjà ajouté de nouveaux éléments dans la partie droite de la barre d'action.

Comment puis-je modifier le côté gauche de la barre d'action ? Je veux changer l'icône et le texte, et je veux ajouter un "bouton retour" dans la barre d'action pour les autres écrans.

Android Action Bar

543voto

dymmeh Points 12120

C'est très simple à réaliser

Si vous voulez le modifier dans le code, appelez :

setTitle("My new title");
getActionBar().setIcon(R.drawable.my_icon);

Et définissez les valeurs comme vous le souhaitez.

Ou, dans le fichier XML du manifeste Android :

<activity android:name=".MyActivity" 
       android:icon="@drawable/my_icon" 
       android:label="My new title" />  

Pour activer le bouton retour dans votre application, utilisez :

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);

Le code doit être placé dans votre onCreate afin que le changement d'étiquette/icône soit transparent pour l'utilisateur, mais en réalité, il peut être appelé n'importe où au cours du cycle de vie de l'activité.

27 votes

Si vous utilisez la bibliothèque de support pour ajouter la barre d'action, utilisez getSupportActionBar au lieu de getActionBar .

3 votes

getActionBar().setHomeButtonEnabled(true) utilise le niveau 14 de l'API ou un niveau supérieur, si vous voulez juste la fonctionnalité du bouton retour dans les API plus anciennes ou plus récentes, vous avez juste besoin de getActionBar().setDisplayHomeAsUpEnabled(true)

3 votes

GetSupportActionBar().setDisplayShowTitleEnabled( true ) ; avant setTitle( "123") ;

19voto

Akshat Agarwal Points 1011

Pour qu'une seule icône soit utilisable par toutes vos barres d'action, vous pouvez le faire dans votre manifeste Android.

<application
    android:logo="@drawable/Image">

    ...

</application>

1 votes

Merci - Je voulais une icône différente pour l'extérieur de l'application (comme vu dans "Toutes les applications") et une autre icône à gauche de la barre d'action. Et cela a fonctionné. Le fichier Manifest contient toujours Android:icon="@drawable/ic_launcher".

2 votes

C'est la bonne méthode car elle pre-loads l'icône, les paramètres programmatiques de l'icône sont lents !

9voto

Jabbir Basha Points 121

Si vous voulez changer le titre de la barre d'action, il suffit de donner le code suivant d'une ligne dans le onCreate() de votre activité

getActionBar().setTitle("Test");

0 votes

Comment puis-je animer ce changement de titre ?

7voto

RobStemen Points 127

Vous pouvez modifier l'icône en ajoutant l'icône de votre choix à vos dossiers de dessinateurs respectifs, puis en modifiant cette ligne dans votre fichier AndroidManifest.xml :

android:icon="@drawable/ic_launcher"

pour correspondre au nom de votre icône, quel qu'il soit. Ou mettez votre icône comme ic_launcher, si c'est la même icône. Pour ce qui est de ce qu'il dit, ajoutez ou modifiez les chaînes qui correspondent à cela dans votre fichier res/values/strings.xml. Puis, encore une fois, dans votre fichier AndroidManifest.xml, modifiez cette ligne :

android:label="@string/app_name"

à n'importe quelle chaîne que vous avez dans leur. Vous devrez faire cela pour l'application dans son ensemble, et pour toutes les activités que vous voulez, mais les lignes sont les mêmes.

J'espère que cela vous aidera.

0 votes

Quelle taille (dp) doit avoir ce android:icon dans l'étiquette d'activité être ?

5voto

Miloš Points 3427

Pour cela, vous pouvez le faire de 2 façons : XML ou Java. Voir ici : Comment modifier le texte de la barre d'action

Donc :

XML :

<activity android:name=".Hello_World"
              android:label="This is the Hello World Application">
</activity>

Java :

public class TitleBar extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

       setContentView(R.layout.main);

       if ( customTitleSupported ) {
           getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
           }

       final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
       if ( myTitleText != null ) {
           myTitleText.setText("NEW TITLE");

           // user can also set color using "Color" and then "Color value constant"
          // myTitleText.setBackgroundColor(Color.GREEN);
       }
 }
}

2 votes

Pour le faire à partir du code, vous devez appeler setTitle(CharSequence text) o setTitle(int titleRes) . N'utilisez pas requestWindowFeature(Window.FEATURE_CUSTOM_TITLE) sauf si vous envisagez de remplacer toute la barre de titre par votre propre affichage personnalisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X