web-dev-qa-db-fra.com

Comment changer le texte sur la barre d'action

Actuellement, il n’affiche que le nom de l’application et je souhaite qu’elle affiche quelque chose de personnalisé et soit différente pour chaque écran de mon application.

Par exemple: mon écran d'accueil pourrait indiquer "page1" dans la barre d'action, tandis qu'une autre activité vers laquelle l'application basculerait pourrait avoir "page2" dans la barre d'action de l'écran.

223
dootcher

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

Pour votre information, ActionBar a été introduit dans l'API niveau 11. ActionBar est une fonctionnalité de fenêtre située en haut de l'activité qui peut afficher les modes title title , 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 premiers jours et énumérer certains des avantages de l’utilisation de ActionBar:

  1. Il offre à vos utilisateurs une interface familière entre les applications, que le système adapte gracieusement à 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 niveau supérieur.

Par exemple:

enter image description here

enter image description here

=> Manière 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:

L'ActionBar vous fournit des looks de base et familiers, des modes de navigation et d'autres actions rapides à effectuer. Mais cela ne veut pas dire que ça a l'air pareil dans chaque application. Vous pouvez le personnaliser selon votre interface utilisateur et vos exigences de conception. Vous devez juste définir et écrire des styles et des thèmes.

Lire la suite sur: Styling the Action Bar

Et si vous souhaitez générer des styles pour ActionBar, alors cet outil Style Generator peut vous aider.

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

Vieux: les jours précédents:

=> Manière 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 voulez personnaliser la barre de titre à votre manière, 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"/>
_

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 dans le dossier values.

_<?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>
_
342
Paresh Mayani

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 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 attribué à la ville d’une adresse spécifique dans la méthode de création de mon activité.

105
Janusz

Vous pouvez définir votre titre par programme en utilisant setTitle dans votre Activity, cette méthode peut accepter un String ou un ID défini dans votre fichier values/strings.xml. Exemple:

public class YourActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

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

    }
}
55
donturner

Nous pouvons modifier le titre de la barre d’action 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 code: dans 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);
    
        }
    }
    
19
Radheshyam Singh

Rappel dans Activity.onCreate () ou à un autre endroit où vous devez changer de titre:

getSupportActionBar().setTitle("Whatever title");
11
Andrey

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

6
nonickh
getActionBar().setTitle("edit your text"); 
3
Habibur Rahman Ovie

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

3
Javatar

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

<activity Android:name=".MainActivity"
    Android:label="Your Label> </activity>
3

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

setTitle("new title");
2
NEC

Le meilleur moyen de changer le nom de la barre d'action consiste à accéder au fichier AndroidManifest.xml et à saisir ce code.

<activity Android:name=".YourActivity"
        Android:label="NameYouWantToDisplay> </activity>
1
Parichay21
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

1
Bhaumik Sathvara

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

Au lieu de cela de définir le titre de la barre d’outils en utilisant l’une des solutions ci-dessus, qui peut être très pénible si vous souhaitez le définir de manière dynamique 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 d'espace réservé doit être fournie à l'aide de FragmentDirections (via la méthode action).

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

0
Fabian Damken

Le moyen le 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 changer le titre à tout moment, inutile de l'appeler avant setContentView(R.layout.activity_test);

0
Hatim