Question

Cette question a été posée - mais sans une réponse satisfaisante à tous! J'essaie à nouveau.

Je veux donner mon icône du lanceur d'application (celui qui est affiché sur le EcrAccueil!) Un autre, une légende plus courte. Il semble que le lanceur prend son étiquette de la section Mainfest sur le label de l'activité principale, comme ici:

<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Je l'ai déjà changé la référence d'origine pour le nom de mon application @ string / app_name à une autre ressource de chaîne plus courte ici.

- grand et : cela aussi bien sûr change le titre par défaut de cette activité! Et je ne voulais pas que cela se produise, il y a assez d'espace pour un long nom de l'application! Réglage du titre intégral à nouveau dans onCreate en utilisant la méthode setTitle(int) ne sert à rien non plus, parce que le nom court sera visible à l'utilisateur pendant une courte période, mais assez longtemps pour avis!

- s'il vous plaît ne pas répondre à ma question par une barre de titre se référant personnalisé ... Je ne veux pas aller aussi loin, à cause d'un titre de chaîne stupide! Il est une douleur pour dessiner une barre de titre personnalisé pour si peu d'effet!

Y at-il pas de moyen facile pour juste donner le lanceur d'une autre chaîne à l'affichage? Merci pour vos réponses!

Modifier Une raison pourquoi avoir une barre de titre personnalisé est une douleur est qu'il ne ressemblera pas à la barre de titre par défaut, je dois faire explicitement les choses pour le faire se ressemblent sur chaque appareil! Et cela ne peut être une solution si, après tout, je ne veux pas une apparence différente!

Était-ce utile?

La solution

Apparemment <intent-filter> peut avoir un attribut label. Si elle est absente l'étiquette est héritée du composant parent (soit l'activité ou l'application). Donc, en utilisant cela, vous pouvez définir une étiquette pour l'icône de lancement, tout en ayant l'activité avec son propre titre.

Notez que, alors que cela fonctionne sur émulateurs, il pourrait ne pas fonctionner sur des appareils réels, car cela dépend de la mise en œuvre de lancement qui est utilisé.

http://developer.android.com/guide/ sujets / manifeste / filtre-element.html intention

<activity
  android:name=".ui.HomeActivity"
  android:label="@string/title_home_activity"
  android:icon="@drawable/icon">
  <intent-filter android:label="@string/app_name">
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
  

Side Note: peut également avoir un attribut icône, mais   inexplicablement Finalité pas remplacer l'icône spécifiée dans la   Activité. Cela peut vous être important si vous prévoyez d'utiliser le natif   ActionBar SDK 11+, qui utilise des icônes et logo spécifié sur la   Activité.

Ajouté Info:. L'étiquette est héritée de l'activité et non l'application

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"       
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".StartActivity"
            android:label="@string/app_long_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

Dans ce cas, app_long_name sera affiché avec l'icône de lancement, si nous ne mettons pas l'étiquette à l'intérieur comme mentionné ci-dessus.

Autres conseils

Je cherchais la même chose et est là ce qui a fonctionné pour moi.

<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Cela donnera un nom court à votre icône du lanceur d'application.

Pour ajouter un nom plus à la barre d'application il vous suffit d'ajouter:

this.setTitle(getResources().getString(R.string.app_name));

à votre fichier java activité principale.

Solution de Mark Renouf ne parvient pas à moi (en utilisant le Nexus 4 et Android 4.4). Il échoue lors de l'utilisation des raccourcis, des raccourcis utilisent l'étiquette d'activité principale au lieu du nom de l'application. J'ai vu des applications comme GMail et Google Gardez bien que des œuvres. Mais quand vous les ouvrez, je remarque son comme un moment entre le titre est vide et les affiche de titre (ce qui semble mieux que le nom de l'application clignote avant de définir le titre à l'aide setTitle ()).

Voici donc la meilleure solution J'ai trouvé :

Créer un style où l'ActionBar ne montre pas le titre / étiquette:

<style name="NoActionBarTitle" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/NoActionBarTitle.ActionBar</item>
</style>

<style name="NoActionBarTitle.ActionBar" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:displayOptions">showHome|useLogo</item>
</style>

J'utilise un tiroir de navigation et en utilisant un logo (parce que j'utilise un logo et une icône pour mon application). Vous pouvez utiliser tout, mais ne pas utiliser showTitle . Ensuite, dans le AndroidManifest.xml, définir le thème de la MainActivity:

<activity
    android:name="com.xx.xxx.MainActivity"
    android:logo="@drawable/ic_icon_padding"
    android:theme="@style/NoActionBarTitle">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Ensuite, dans la méthode onCreate () du MainActivity, définissez le titre de votre barre d'action:

getActionBar().setTitle(R.string.your_title);

Après , vous pouvez appeler:

getActionBar().setDisplayShowTitleEnabled(true);

Tricky mais vaut la peine.

Ce ne satisfait probablement pas ce que vous voulez faire, mais avez-vous pensé à créer un écran de démarrage qui affiche très brièvement (avec le titre par défaut), puis lance votre nouvelle activité « principale » réelle avec le titre de votre choix en utilisant la méthode de setTitle(int)? Je ne l'ai pas essayé de voir si cela fonctionne, mais cela pourrait créer un travail agréable autour nature qui ne montre pas de moins de transparente de ce que vous essayez d'atteindre.

Pour toute personne utilisant Support / appcompat Barre d'outils via la méthode setSupportActionBar(), le titre de l'activité peut être définie dans XML Barre d'outils:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    app:title="@string/activity_title"
    ...
/>

Ceci remplacera les étiquettes d'application et d'activités définies dans le manifeste.

android.support.v7.widget.Toolbar

J'ai trouvé une solution pour ce problème
   En manifest.xml
Écrivez votre Nom de l'application dans le android:label de l'activité lanceur (principal) .
Cela rendra l'étiquette de votre principale activité identique à celle de l'étiquette d'application.
Puis, dans la fonction onCreate() de votre activité Launcher (principal) écrire cette déclaration

if (getSupportActionBar() != null) {
            getSupportActionBar().setTitle("main activity label");
        }

écrire ici l'étiquette que vous voulez donner à votre activité de lancement (principal).

Vous pouvez faire quelque chose comme ceci:

public class FooBar extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // change title
        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);
    }
}

Vous devrez créer une mise en page personnalisée pour maintenir le titre. Il pourrait être aussi simple que (appelé my_title.xml dans ce cas):

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="foo bar"/>

Dans votre fichier AndroidManifest.xml il vous suffit de définir le titre de l'application, qui est ce qui va être montré dans l'icône du lanceur. Pour votre activité, vous n'avez pas besoin de définir un titre là-bas.

Le lanceur fait montre Android: étiquette et android: icône activité (s) qui déclarent

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

étiquette d'application est d'aucune utilité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top