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

Allan Ramírez
la source

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é.

dymmeh
la source
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>
Akshat Agarwal
la source
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);
Sagar Devanga
la source
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

Azzy
la source
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");
Jabbir Basha
la source
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.

RobStemen
la source
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);
Alessandro Caliaro
la source
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);
       }
 }
}
Miloš
la source
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);
Bhaumik Sathvara
la source
2

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

HomeActivity.this.setTitle(item.getTitle());
AmandaHLA
la source
1

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

setTitle("NewName");
Chandrahasa Rai
la source
1

Ce travail pour moi:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);
Ram Chhabra
la source
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.

CloudyMusic
la source
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");

user4757345
la source
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"

Abhishek Rajpurohit
la source
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>
Kartik ganiga
la source
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")
    }
Naresh Pawar
la source