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.
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:
Par exemple:
_getActionBar().setTitle("Hello world App");
getSupportActionBar().setTitle("Hello world App"); // provide compatibility to all the versions
_
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();
}
_
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.
=============================================== ===============================
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>
_
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:
_<?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"/>
_
_<?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>
_
_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);
}
}
}
_
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>
_
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é.
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);
}
}
Nous pouvons modifier le titre de la barre d’action de deux manières:
Dans le manifeste: dans le fichier manifeste, définissez le libellé de chaque activité.
Android:label="@string/TitleWhichYouWantToDisplay"
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);
}
}
Rappel dans Activity.onCreate () ou à un autre endroit où vous devez changer de titre:
getSupportActionBar().setTitle("Whatever title");
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
getActionBar().setTitle("edit your text");
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.
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>
Vous venez d'ajouter ce code dans la méthode onCreate
.
setTitle("new title");
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>
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
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"
).
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)
;