Domanda

Questa domanda è stato chiesto prima - ma con nessuna risposta soddisfacente a tutti! Così sto cercando di nuovo.

voglio dare la mia icona di avvio delle applicazioni (quello che viene visualizzato sul startscreen!) Un diverso, la didascalia più breve. Sembra che il lanciatore prende la sua etichetta dalla sezione Mainfest sulla etichetta del principale attività, come in questo caso:

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

Ho già cambiato il riferimento originale del mio app nome @ string / app_name a un diverso, più corto di risorse stringa qui.

MA - grande MA : anche questo, naturalmente, cambia titolo predefinito di questa attività! E non volevo che accadesse, non c'è abbastanza spazio per un nome di applicazione a lungo! Impostare il titolo di nuovo a lungo in onCreate con il metodo setTitle(int) non fa bene neanche, perché il nome breve sarà visibile all'utente per un breve periodo, ma abbastanza a lungo da preavviso!

E - per favore non rispondere alla mia domanda facendo riferimento ad una barra del titolo personalizzato ... Io non voglio andare così lontano, solo a causa di un titolo stringa di stupido! E 'un dolore per disegnare una barra del titolo personalizzato per così poco effetto!

C'è alcun modo semplice per fare solo il programma di avvio di una stringa diversa da esposizione? Grazie per le vostre risposte!

Modifica Una ragione in più perché avere una barra del titolo personalizzato è un dolore è che non avrà l'aspetto della barra del titolo di default, avrei dovuto fare in modo esplicito le cose per far sembrare uguali su ogni dispositivo! E questo non può essere una soluzione se, dopo tutto, io non voglio un aspetto diverso!

È stato utile?

Soluzione

A quanto pare <intent-filter> può avere un attributo etichetta. Se è assente l'etichetta viene ereditato dalla componente principale (sia di attività o applicazione). Così, attraverso questo, si può impostare un'etichetta per l'icona di lancio, pur avendo l'attività con il proprio titolo.

Si noti che, mentre questo funziona su emulatori, potrebbe non funzionare su dispositivi reali, perché dipende l'attuazione lanciatore che viene utilizzato.

http://developer.android.com/guide/ argomenti / manifesto / intent-filtro-element.html

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

Nota a margine: può anche avere un attributo un'icona, ma   inspiegabilmente lo fa non ignorare l'icona specificata nella   Attività. Questo può essere importante per voi, se si prevede di utilizzare il nativo   ActionBar in SDK 11+, che utilizza icone e logo specificato sulla   Attività.

Aggiunto Info:. L'etichetta viene ereditato da attività e non l'applicazione

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

In questo caso, app_long_name verrà visualizzato con un'icona di avvio, se non mettiamo etichetta all'interno di cui sopra.

Altri suggerimenti

che stavo cercando la stessa cosa ed ecco cosa ha funzionato per me.

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

Questo vi darà un nome breve per l'icona di avvio delle applicazioni.

Per aggiungere un nome più grande per la barra delle applicazioni è sufficiente aggiungere:

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

al file di attività di java principale.

Soluzione di Mark Renouf non riesce a me (utilizzando Nexus 4 e Android 4.4). Viene a mancare quando si utilizzano i collegamenti, i collegamenti utilizzare l'etichetta principale attività invece del nome dell'app. Ho visto alcune applicazioni come Gmail e Google Keep che funziona bene. Ma quando li si apre, ho notato il suo come un momento tra il titolo è vuoto e il compare il titolo (che sembra migliore rispetto al nome dell'applicazione di lampeggiare prima di impostare il titolo utilizzando setTitle ()).

Così qui è il soluzione migliore che ho trovato :

Creare uno stile in cui l'ActionBar non mostra il titolo / etichetta:

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

Io sto usando un cassetto di navigazione e l'utilizzo di un logo (perché io uso un logo e un'icona per la mia app). È possibile utilizzare qualsiasi ma non utilizzare showtitle . Poi nel AndroidManifest.xml, impostare il tema per il 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>

Poi, nel metodo onCreate () della MainActivity, impostare il titolo della vostra barra delle azioni:

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

Dopo , è possibile chiamare:

getActionBar().setDisplayShowTitleEnabled(true);

Tricky ma vale la pena.

Questo probabilmente non soddisfare ciò che si vuole fare, ma hai pensato di creare una schermata iniziale che mostra molto brevemente (con il titolo di default) e poi lancia la nuova effettivo di attività "principale" con il titolo di vostra scelta utilizzando il metodo setTitle(int)? Non ho provato questo per vedere se funziona, ma che potrebbe creare una piacevole lavoro in giro che non mostra del meno senza soluzione di continuità natura di ciò che si sta cercando di ottenere.

Per chi utilizza Supporto / AppCompat Barra degli strumenti tramite il metodo setSupportActionBar(), il titolo di attività può essere impostata nella barra degli strumenti XML:

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

Questo sovrascriverà etichette applicazioni e attività specificati nel manifesto.

android.support.v7.widget.Toolbar

Ho trovato una soluzione per questo problema

   In manifest.xml
Scrivi il tuo app nome nella android:label dell'attività launcher (principale) .
Questo renderà l'etichetta della vostra attività principale uguale a quella dell'etichetta app.
Poi, nella funzione onCreate() del Launcher (principale) di attività scrivere questa dichiarazione

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

Ecco scrivere l'etichetta che si vuole dare al vostro Launcher (principale) di attività.

Si può fare qualcosa di simile:

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

Si dovrà creare un layout personalizzato a detenere il titolo. Potrebbe essere semplice come (chiamato my_title.xml in questo caso):

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

Nel file AndroidManifest.xml è sufficiente impostare il titolo per l'applicazione, che è ciò che sta per essere mostrato in l'icona di avvio. Per la vostra attività non è necessario impostare un titolo lì.

Il programma di avvio in realtà spettacoli Android: etichetta e Android: icona di attività (i) che dichiaro

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

in modo etichetta applicazione è di alcuna utilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top