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


225

J'essaie de faire certaines choses sur l'ActionBar dans Android.

J'ai déjà ajouté de nouveaux éléments dans le côté droit de la barre d'action.

Comment puis-je changer 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

Barre d'action Android

Réponses:


514

C'est très simple à réaliser

Si vous souhaitez le changer de code, appelez:

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

Et définissez les valeurs à votre guise.

Ou, dans le fichier XML manifeste Android:

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

Pour activer le bouton de retour dans votre application, utilisez:

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

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


23
Si vous utilisez la bibliothèque de support pour ajouter la barre d'actions, utilisez getSupportActionBarau lieu de getActionBar.
Rick Pastoor

3
getActionBar().setHomeButtonEnabled(true)utilise le niveau d'API 14 ou supérieur, si vous voulez simplement la fonctionnalité du bouton de retour dans les anciennes et les nouvelles API dont vous avez juste besoingetActionBar().setDisplayHomeAsUpEnabled(true)
Akshat Agarwal

3
getSupportActionBar (). setDisplayShowTitleEnabled (true); avant setTitle ("123");
Jose Manuel Abarca Rodríguez

Si vous utilisez le code getActionBar (). SetIcon (R.drawable.my_icon); pouvez-vous le rendre cliquable?
Skitty

1
@ JoseManuelAbarcaRodríguez Merci, c'est ce qui me manquait. À Kotlin: supportActionBar?.setDisplayShowTitleEnabled(true)alors supportActionBar?.title = "your title". Et cela doit être fait en onResume, pas en onCreate, lors de la création de l'activité avec startActivity.
Eric Aya

18

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
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 manifeste contient toujours android: icon = "@ drawable / ic_launcher"
flobacca

2
C'est la bonne façon car c'est pre-loadsl'icône, l'icône des paramètres de programmation est lente!
Muhammad Babar

11

Il vous suffit d'ajouter ces 3 lignes de code. Remplacez l'icône par votre propre icône. Si vous souhaitez générer des icônes, utilisez ce

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);

11

Dans les directives de conception matérielle Android 5.0, découragez l'utilisation de l'icône dans l'actionBar

pour l'activer, ajoutez le code suivant

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);

le mérite revient à l'auteur de cet article


9

Si vous voulez changer le titre de la barre d'action, donnez simplement le code de 1 ligne suivant dans le onCreate () de votre activité

getActionBar().setTitle("Test");

Comment animer ce changement de titre?
Srikar Reddy

7

Vous pouvez changer l'icône dans votre en ajoutant l'icône que vous voulez à vos dossiers dessinables respectifs, puis en changeant cette ligne dans votre fichier AndroidManifest.xml:

android:icon="@drawable/ic_launcher"

pour correspondre au nom de votre icône. Ou mettez votre icône en tant que ic_launcher, s'il s'agit de la même icône. Quant à ce qu'il dit, ajoutez ou modifiez les chaînes qui correspondent à celles de votre fichier res / values ​​/ strings.xml. Puis, encore une fois dans votre fichier AndroidManifest.xml, modifiez cette ligne:

android:label="@string/app_name"

quelle que soit la chaîne que vous avez dans leur. Vous devrez le faire pour l'application dans son ensemble et les activités que vous souhaitez, mais les lignes sont les mêmes.

J'espère que cela t'aides.


Quelle taille (dp) cette android:iconbalise d'activité devrait-elle avoir?
cuddlecheek

6
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);

5

Pour cela, vous pouvez le faire de 2 manières: XML ou Java. Voir ici: Comment changer le texte dans la barre d'actions

Alors:

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
Pour le faire à partir du code, vous devez appeler setTitle(CharSequence text)ou setTitle(int titleRes). Ne pas utiliser à requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)moins que vous prévoyez de remplacer la totalité de la barre de titre avec votre vue personnalisée.
Karakuri

3

Pour le titre défini :

getActionBar().setTitle("Title");

Pour définir l'icône :

getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);

2

J'ai utilisé l'appel suivant à l'intérieur onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle());

1

Ajoutez le code ci-dessous à l'intérieur d'une fonction onCreate dans votre activité.

setTitle("NewName");

1

Ce travail pour moi:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);

0

Le titre de la barre d'actions utilise, par défaut, le libellé de l'activité en cours, mais vous pouvez également le définir par programme via ActionBar.setTitle().

Pour implémenter la fonctionnalité du bouton "Précédent" (plus précisément, "Haut") dont vous parlez, lisez la section "Utilisation de l'icône de l'application pour la navigation" du guide du développeur de la barre d'action .

Enfin, pour changer l'icône, le guide le couvre également. En bref, la barre d'action affichera l'image fournie android:icondans votre manifeste applicationou activityélément, s'il y en a un. La pratique typique consiste à créer une icône d'application (dans toutes les différentes densités dont vous aurez besoin) nommée ic_launcher.pnget à la placer dans vos drawable-*répertoires.


0

J'ai eu une non-static method setTitle(CharSequence) cannot be referenced from a static contexterreur car j'ai utilisé setTitle()dans la classe statique PlaceholderFragment. Je l'ai résolu en utilisantgetActivity().getActionBar().setTitle("new title");


0

Accédez au manifeste dans lequel l'activité spécifique que vous souhaitez modifier Barre d'action Nom du titre et écrivez android: label = "Nom du titre"


0

Accédez au fichier AndroidManifest.xml . Trouvez la <application>balise Là, vous pouvez voir un attribut

android:label="@string/app_name"

Allez maintenant dans res> values> strings.xml

Changer la

<string name="app_name">MainActivity</string> 

à

<string name="app_name">Your Desired Name</string>

Exemple

AndroidManifest.xml

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubmitForm">

        </activity>
    </application>

strings.xml

<resources>
    <string name="app_name">Your Desired Name</string>
    <string name="action_settings">Settings</string>
</resources>

0

Vous pouvez également procéder comme suit:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.