255 votes

Modifier le texte de la barre de titre dans Android

Comment puis-je changer le texte de la barre de titre ? Pour l'instant, elle affiche juste le titre du programme et je veux qu'elle affiche quelque chose de mon choix et qu'elle soit différente pour chaque page/activité de mon application. Par exemple, ma page d'accueil pourrait dire page1 dans la barre de titre tandis qu'une autre activité vers laquelle l'application bascule pourrait avoir page2 dans la barre de titre de cette page.

382voto

Paresh Mayani Points 48123

Mise à jour : Dernier motif ActionBar (Title) :

FYI, Barre d'action a été introduit dans le niveau 11 de l'API. La barre d'action est une fenêtre située en haut de l'activité qui peut afficher les éléments suivants 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 de la barre d'action :

  1. Il offre à vos utilisateurs une interface familière à travers les applications que le système adapte gracieusement aux 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 la barre d'action est déjà prête avec une abstraction de haut niveau.

Par exemple :

enter image description here

enter image description here

\=> Voie normale,

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

\=> Personnalisation de la barre d'action,

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 :

La barre d'action vous permet d'obtenir un aspect basique et familier, des modes de navigation et d'autres actions rapides à effectuer. Mais cela ne veut pas dire qu'elle a le même aspect dans toutes les applications. Vous pouvez la personnaliser en fonction de vos exigences en matière d'interface utilisateur et de conception. Il vous suffit de définir et d'écrire des styles et des thèmes.

Plus d'informations ici : Stylisation de la barre d'action

Et si vous voulez générer des styles pour la barre d'action, alors ceci Générateur de style peut vous aider.

\=================================================================================

Ancien : Autrefois :

\=> Voie normale,

vous pouvez modifier le titre de chaque écran (c'est-à-dire de l'activité) en réglant leur Android:label

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

\=> Personnalisé - Titre - barre


Mais si vous voulez personnaliser la barre de titre à votre façon, c'est-à-dire Want to put Image icon and custom-text alors 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"/>

barre de titre.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>

Barre de titre.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 la rubrique values dossier.

<?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>

2 votes

Suivez cet exemple pour définir un titre personnalisé dans Android pour une activité ou globalement pour toute l'application : labs.makemachine.net/2010/03/custom-Android-window-title

1 votes

+1 ! merci pour ce travail, mais pouvez-vous nous dire pourquoi Android:layout_width="400px" , à la disposition linéaire parent ?

2 votes

@quinestor oui vous pouvez utiliser "wrap_content" ou "fill_parent" si vous voulez, c'est juste un exemple.

117voto

Janusz Points 52607

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 type chaîne pour cette activité.

Vous pouvez également définir le texte du titre à partir du code si vous souhaitez le définir de manière dynamique.

setTitle(address.getCity());

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

57voto

donturner Points 3552

Vous pouvez définir votre titre de manière programmatique en utilisant setTitle au sein de votre Activity cette méthode peut accepter soit un String ou un ID défini dans votre values/strings.xml fichier. Exemple :

public class YourActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

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

    }
}

19voto

Nous pouvons modifier le titre de la barre d'action de deux manières :

  1. Dans le manifeste : dans le fichier manifeste, définissez l'étiquette de chaque activité.

    android:label="@string/TitleWhichYouWantToDisplay"
  2. En code : dans le code, appelez la méthode setTitle() avec un String ou l'id de String 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);
    
        }
    }

5voto

nonickh Points 69

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

cela fonctionne pour moi

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