web-dev-qa-db-fra.com

Définition du titre et du sous-titre de la barre d'action

Je veux définir le titre et le sous-titre de ma barre d’action avant la compilation. J'ai un moyen de le faire comme ça:

ActionBar ab = getActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");

Mais je ne veux pas le faire au moment de l'exécution. Existe-t-il un fichier XML ou un emplacement où je peux spécifier ces titres?

J'essaie d'y parvenir:

enter image description here

Modifier:

La raison pour laquelle je le veux en XML est que je veux que mon application soit prise en charge dans l'API de niveau 8. Et la méthode getActionBar () est prise en charge au moins au niveau 11.

59
Adil Malik

Vous pouvez faire quelque chose comme ceci pour coder pour les deux versions:

/**
 * Sets the Action Bar for new Android versions.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void actionBarSetup() {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    ActionBar ab = getActionBar();
    ab.setTitle("My Title");
    ab.setSubtitle("sub-title"); 
  }
}

Appelez ensuite actionBarSetup() dans onCreate(). if exécute le code uniquement sur les nouvelles Android et @TargetApi Permet au code de se compiler. Par conséquent, il est sécurisé pour les anciennes et les nouvelles versions d'API. .

Alternativement, vous pouvez également utiliser ActionBarSherlock ( see edit) afin que vous puissiez avoir la barre d’action sur toutes les versions. Vous devrez apporter certaines modifications, telles que l'extension de votre activité SherlockActivity et l'appel de getSupportActionBar(), mais il s'agit d'une très bonne solution globale.

Modifier

Notez que lorsque cette réponse a été écrite à l'origine, ActionBarSherlock, qui est depuis obsolète, était la solution de compatibilité par excellence.

De nos jours, la bibliothèque appcompat-v7 De Google offre les mêmes fonctionnalités mais est prise en charge (et mise à jour activement) par Google. Les activités souhaitant implémenter un ActionBar doivent:

  • étendre AppCompatActivity
  • utiliser un dérivé Theme.AppCompat

Pour obtenir une instance ActionBar à l'aide de cette bibliothèque, la méthode bien nommée getSupportActionBar() est utilisée.

90
A--C

Le titre de la barre d’action pourrait être dans le Manifeste Android, ici:

<activity 
    . . .
          Android:label="string resource" 
    . . .
</activity>

Android: label Une étiquette lisible par l'utilisateur pour l'activité. L'étiquette est affichée à l'écran lorsque l'activité doit être représentée à l'utilisateur. Il est souvent affiché avec l'icône d'activité. Si cet attribut n'est pas défini, l'étiquette utilisée pour l'application dans son ensemble est utilisée (voir l'attribut label de l'élément). L'étiquette de l'activité - qu'elle soit définie ici ou par l'élément - est également l'étiquette par défaut pour tous les filtres d'intention de l'activité (voir l'attribut label de l'élément). L'étiquette doit être définie comme une référence à une ressource de chaîne, de sorte qu'elle puisse être localisée comme les autres chaînes de l'interface utilisateur. Toutefois, pour faciliter le développement de l'application, il peut également être défini en tant que chaîne brute.

13

Essaye celui-là:

Android.support.v7.app.ActionBar ab = getSupportActionBar();
ab.setTitle("This is Title");
ab.setSubtitle("This is Subtitle");
9
Pacific P. Regmi

Il y a une autre option que personne n'a commentée, à partir de la bibliothèque de support V7 a été implémentée par Google ActionBarSupport, qui est compatible ActionBar de Android 2.2 au dernier.
Si vous changez votre ActionBar ceci vous pouvez faire getSupportActionBar().setTitle("") sur toutes les versions Android).

5
user3144006
    <activity Android:name=".yourActivity" Android:label="@string/yourText" />

Mettez ce code dans votre fichier manifeste Android) et définissez le titre de la barre d’action sur ce que vous voulez!

3
Rayyaan Mustafa

Nan! Vous devez le faire au moment de l'exécution.

Si vous souhaitez rendre votre application compatible avec les versions antérieures, vérifiez simplement le niveau de l'API du périphérique. S'il est supérieur à 11, vous pouvez alors manipuler la barre d’action et définir le sous-titre.

if(Integer.valueOf(Android.os.Build.VERSION.SDK) >= 11){
    //set actionbar title
}
3
Victor KP

Essayez ceci

Allez simplement dans votre fichier manifeste. et Vous avez défini le libellé de chaque activité dans votre fichier manifeste.

<activity
        Android:name=".Search_Video"
        Android:label="@string/app_name"
        Android:screenOrientation="portrait">
    </activity>

changer ici

Android: label = "@ string/your_title"

1
Dharmendra Mishra

Essaye ça:

Dans strings.xml, ajoutez votre titre et vos sous-titres ...

ActionBar ab = getActionBar();
ab.setTitle(getResources().getString(R.string.myTitle));
ab.setSubtitle(getResources().getString(R.string.mySubTitle));
1
drulabs

C'est un one-liner trivial à Kotlin

supportActionBar?.title = getString(R.string.coolTitle)

1
SARose
supportActionBar?.title = "Hola tio"
supportActionBar?.subtitle = "Vamos colega!"
1
Andrey

Pour une activité, vous pouvez utiliser cette approche pour spécifier un sous-titre, avec le titre, dans le manifeste.

manifeste:

<activity
    Android:name=".MyActivity"
    Android:label="@string/my_title"
    Android:description="@string/my_subtitle">
</activity>

Activité:

try {
    ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
    //String title = activityInfo.loadLabel(getPackageManager()).toString();
    int descriptionResId = activityInfo.descriptionRes;
    if (descriptionResId != 0) {
        toolbar.setSubtitle(Utilities.fromHtml(getString(descriptionResId)));
    }
}
catch(Exception e) {
    Log.e(LOG_TAG, "Could not get description/subtitle from manifest", e);
}

De cette façon, il vous suffit de spécifier la chaîne de titre une seule fois et de spécifier le sous-titre juste à côté.

0

Vous pouvez définir le titre dans la barre d’action en utilisant AndroidManifest.xml. Ajouter une étiquette à la activity

<activity
            Android:name=".YourActivity"
            Android:label="Your Title" />
0
Ricky