Comment changer le texte de la barre d'actions

230

Actuellement, il affiche simplement le nom de l'application et je veux qu'il affiche quelque chose de personnalisé et soit différent pour chaque écran de mon application.

Par exemple: mon écran d'accueil pourrait dire «page1» dans la barre d'action tandis qu'une autre activité vers laquelle l'application bascule pourrait avoir «page2» dans la barre d'action de cet écran.

dootcher
la source

Réponses:

358

Mise à jour: dernier modèle ActionBar (titre):

Pour info, ActionBar a été introduit dans l'API niveau 11. ActionBar est une fonction de fenêtre en haut de l'activité qui peut afficher le titre de l' activité , les modes de navigation et d'autres éléments interactifs comme la recherche.

Je me souviens exactement de la personnalisation de la barre de titre et de sa cohérence dans l'application. Je peux donc faire une comparaison avec les jours précédents et énumérer certains des avantages de l'utilisation d'ActionBar:

  1. Il offre à vos utilisateurs une interface familière à travers les applications que le système adapte avec élégance pour différentes configurations d'écran.
  2. Les développeurs n'ont pas besoin d'écrire beaucoup de code pour afficher le titre de l'activité, les icônes et les modes de navigation car ActionBar est déjà prêt avec une abstraction de haut niveau.

Par exemple:

entrez la description de l'image ici

entrez la description de l'image ici

=> Voie normale,

getActionBar().setTitle("Hello world App");   
getSupportActionBar().setTitle("Hello world App");  // provide compatibility to all the versions

=> Personnalisation de la barre d'actions,

Par exemple:

@Override
public void setActionBar(String heading) {
    // TODO Auto-generated method stub

    com.actionbarsherlock.app.ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.title_bar_gray)));
    actionBar.setTitle(heading);
    actionBar.show();

}

Styliser la barre d'action:

L'ActionBar vous offre des looks de base et familiers, des modes de navigation et d'autres actions rapides à effectuer. Mais cela ne signifie pas que cela ressemble à chaque application. Vous pouvez le personnaliser selon vos exigences d'interface utilisateur et de conception. Il vous suffit de définir et d'écrire des styles et des thèmes.

En savoir plus sur: Styling the Action Bar

Et si vous souhaitez générer des styles pour ActionBar, cet outil Générateur de styles peut vous aider.

================================================== ===============================

Vieux: jours précédents:

=> Voie normale,

vous pouvez modifier le titre de chaque écran (c.-à-d. activité) en définissant leur Android:label

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

=> Personnalisé - Titre - barre


Mais si vous souhaitez personnaliser la barre de titre à votre manière, c'est Want to put Image icon and custom-text-à- dire que le code suivant fonctionne pour moi:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

titlebar.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="400dp" 
  android:layout_height="fill_parent"
  android:orientation="horizontal">

<ImageView android:id="@+id/ImageView01" 
            android:layout_width="57dp" 
            android:layout_height="wrap_content"
            android:background="@drawable/icon1"/>

<TextView 

  android:id="@+id/myTitle" 
  android:text="This is my new title" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:textColor="@color/titletextcolor"
   />
</LinearLayout>

TitleBar.java

public class TitleBar extends Activity {

    @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);
        }
    }
}

strings.xml

Le fichier strings.xml est défini sous le valuesdossier.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, Set_Text_TitleBar!</string>
    <string name="app_name">Set_Text_TitleBar</string>
    <color name="titlebackgroundcolor">#3232CD</color>
    <color name="titletextcolor">#FFFF00</color>
</resources>
Paresh Mayani
la source
2
Suivez cet exemple pour définir un titre personnalisé dans Android pour une activité ou globalement pour une application entière: labs.makemachine.net/2010/03/custom-android-window-title
Paresh Mayani
1
+1! merci pour cela, mais pourriez-vous dire pourquoi l'androïde: layout_width = "400px", à la disposition linéaire parent?
quinestor
2
@quinestor oui vous pouvez utiliser "wrap_content" ou "fill_parent" si vous voulez, c'est juste par exemple.
Paresh Mayani
Quelques conseils pour javascript?
lierre
1
J'irais contre l'utilisation de "px" au lieu d'unités indépendantes telles que "dp" parce que beaucoup de nouveaux apprenants apprennent beaucoup plus que ce qui a été répondu en essayant de décomposer le code et d'en tirer le meilleur parti.
Akshat Agarwal
107

Vous pouvez définir le libellé de chaque activité dans votre fichier manifeste.

Une définition normale d'une activité ressemble à ceci:

<activity
     android:name=".ui.myactivity"
     android:label="@string/Title Text" />

Où le texte du titre doit être remplacé par l'id d'une ressource de chaîne pour cette activité.

Vous pouvez également définir le texte du titre à partir du code si vous souhaitez le définir dynamiquement.

setTitle(address.getCity());

avec cette ligne, le titre est défini sur la ville d'une adresse spécifique dans la méthode oncreate de mon activité.

Janusz
la source
56

Vous pouvez définir votre titre par programmation à l'aide setTitlede votre Activity, cette méthode peut accepter soit un Stringou un ID défini dans votre values/strings.xmlfichier. Exemple:

public class YourActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        setTitle(R.string.your_title);
        setContentView(R.layout.main);

    }
}
donturner
la source
19

Nous pouvons modifier le titre ActionBar de deux manières:

  1. Dans le manifeste: dans le fichier manifeste, définissez le libellé de chaque activité.

    android:label="@string/TitleWhichYouWantToDisplay"
  2. Dans le code: dans le code, appelez la méthode setTitle () avec une chaîne ou l'ID de chaîne comme argument.

    public class MainActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            setTitle(R.string.TitleWhichYouWantToDisplay);
            // OR You can also use the line below
            // setTitle("MyTitle")
            setContentView(R.layout.activity_main);
    
        }
    }
Radheshyam Singh
la source
16

Dans le rappel Activity.onCreate () ou dans un autre endroit où vous devez changer de titre:

getSupportActionBar().setTitle("Whatever title");
Andrey
la source
5

essayez de faire ça ...

public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
    this.setTitle(String.format(your_format_string, your_personal_text_to_display));
    setContentView(R.layout.your_layout);
       ...
       ...
}

ça marche pour moi

nonickh
la source
3

Un peu plus vieux mais avait le même problème. Je l'ai fait comme ça:

strings.xml

<string name="title_awesome_app">My Awesome App</string>

et assurez-vous de le définir dans votre AndroidManifest.xml :

<activity
            ...
            android:label="@string/title_awesome_app" >
            ...
</activity>

c'est facile et vous n'avez pas à vous soucier des références nulles et d'autres choses.

Javatar
la source
3
getActionBar().setTitle("edit your text"); 
Habibur Rahman Ovie
la source
3

Le moyen le plus simple de modifier le nom de la barre d'actions consiste à accéder au fichier AndroidManifest.xml et à saisir ce code.

<activity android:name=".MainActivity"
    android:label="Your Label> </activity>
Mallikarjun Dodmani
la source
2

Vous venez d'ajouter ce code dans la onCreateméthode.

setTitle("new title");
NEC
la source
1
ActionBar ab = getActionBar();
TextView tv = new TextView(getApplicationContext());

LayoutParams lp = new RelativeLayout.LayoutParams(
        LayoutParams.MATCH_PARENT, // Width of TextView
        LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
tv.setTextColor(Color.RED);
ab.setCustomView(tv);

Pour plus d'informations, consultez ce lien:

http://android--code.blogspot.in/2015/09/android-how-to-change-actionbar-title_21.html

Bhaumik Sathvara
la source
Vous pouvez utiliser getSupportActionBar () si vous utilisez AppCompatActivity
Hamid Vakilian
1

La meilleure façon de modifier le nom de la barre d'actions consiste à accéder au fichier AndroidManifest.xml et à saisir ce code.

<activity android:name=".YourActivity"
        android:label="NameYouWantToDisplay> </activity>
Parichay21
la source
1

Kotlin

Vous pouvez le faire par programme dans Kotlin de cette façon. Vous l'ignorez simplement si "supportActionBar" est nul :

    supportActionBar?.setTitle(R.string.my_text)
    supportActionBar?.title = "My text"

Ou de cette façon. Il lève une exception si "supportActionBar" est null.

    supportActionBar!!.setTitle(R.string.my_text)
    supportActionBar!!.title = "My text"
Mateus Melo
la source
0

La façon la plus simple est d'appeler this.setTitle("...")si vous êtes dans l'activité. Et si vous êtes dans un fragment, appelez simplement getActivity().setTitle("...");

De cette façon, vous pourrez modifier le titre à tout moment, pas besoin de l'appeler avant setContentView(R.layout.activity_test);

Hatim
la source
0

Pour les futurs développeurs qui utilisent AndroidX et le composant architectural de navigation .

Au lieu de définir le titre de la barre d'outils à l'aide de l'une des solutions ci-dessus, ce qui peut être très pénible si vous souhaitez le définir dynamiquement lors d'un changement de pile arrière, vous pouvez définir un espace réservé pour le titre du fragment dans le graphique de navigation, comme suit:

<fragment
    android:id="@+id/some_fragment"
    android:name="package.SomeFragment"
    android:label="Hello {placeholder}"
    tools:layout="@layout/fragment_some">
    <argument
        android:name="placeholder"
        app:argType="string" />
</fragment>

La valeur de l'espace réservé doit être fournie à l'aide de FragmentDirections(via la méthode d'action).

Il est ensuite remplacé dans le titre et s'affiche comme Hello World(quand placeholder = "World").

Fabian Damken
la source
0

getSupportActionBar().setTitle("title");

Phani varma
la source
Les réponses uniquement codées sont des réponses de faible qualité. Ajoutez quelques explications pour expliquer pourquoi cela fonctionne.
Taslim Oseni