Frage

Diese Frage wurde vor gefragt - aber ohne befriedigende Antwort auf alle! Also habe ich es wieder bin versucht.

Ich möchte meine Anwendung Launcher-Symbol geben (die, die auf dem Startbildschirm angezeigt wird!) Eine andere, kürzere Beschriftung. Es scheint, der Launcher das Etikett vom Mainfest Abschnitt über die Haupttätigkeit des Labels nimmt, wie hier:

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

Ich habe bereits den ursprünglichen Verweis auf meinen app Namen geändert @ Zeichenfolge / app_name auf einen anderen, kürzere String-Ressource hier.

- big ABER : Das ist auch natürlich ändert sich diese Standard Titel Aktivität! Und ich wollte nicht, dass das geschehen kann, gibt es genügend Platz für ein langen Anwendungsnamen! Einstellen des langen Titel wieder in onCreate die setTitle(int) Methode verwenden, funktioniert aber auch nicht gut, weil der Kurzname für eine kurze Zeit für den Benutzer sichtbar sein wird, aber lang genug, um zu bemerken!

Und - bitte antworten Sie nicht auf meine Frage zu einem benutzerdefinierten titlebar von beziehen ... Ich will nicht, dass die langen Weg gehen, nur wegen eines dummen String Titels! Es ist ein Schmerz für so wenig Wirkung eines benutzerdefinierten Titelleiste zu ziehen!

Gibt es keine einfache Möglichkeit, , um nur den Launcher gibt eine andere Zeichenfolge Anzeige? Vielen Dank für Ihre Antworten!

Edit: Ein weiterer Grund, warum eine benutzerdefinierte titlebar ein Schmerz ist, dass es nicht wie die Standard titlebar aussehen wird, möchte ich ausdrücklich tun Dinge, um es auf jedem Gerät gleich aussehen zu machen! Und das kann keine Lösung sein, wenn doch, ich habe nicht ein anderes Aussehen wünschen!

War es hilfreich?

Lösung

Offenbar <intent-filter> kann ein Label-Attribut haben. Wenn es nicht vorhanden ist wird das Etikett von der übergeordneten Komponente vererbt (entweder Aktivität oder Anwendung). Also mit diesem können Sie eine Bezeichnung für das Launcher-Symbol gesetzt, während immer noch die Aktivität mit ihr eigenen Titel ist.

Beachten Sie, dass, während diese Arbeiten auf Emulatoren, es könnte nicht die Arbeit an realen Geräten, da sie auf der Abschuss Implementierung abhängt, die verwendet wird.

http://developer.android.com/guide/ Themen / manifest / Intent-Filter-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>
  

Side Hinweis: kann auch ein Symbol Attribut hat, aber   es tut unerklärlich nicht außer Kraft setzen, die in der angegebenen Symbol   Aktivität. Dies kann für Sie wichtig sein, wenn Sie die native verwenden möchten   ActionBar in SDK 11+, das Symbol und Logo verwendet, um auf dem angegebenen   Aktivität.

hinzugefügt. Info: Das Label von Activity geerbt wird, und nicht die Anwendung

 <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 diesem Fall wird app_long_name mit Launcher-Symbol angezeigt werden, wenn wir, wie oben erwähnt nicht Etikett nach innen setzen.

Andere Tipps

Ich war für die gleiche Sache suchen und hier ist was für mich gearbeitet.

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

Dies wird einen kurzen Namen für Ihre Anwendung Launcher-Symbol geben.

Um einen größeren Namen in der Anwendungsleiste hinzufügen, müssen Sie nur noch hinzufügen:

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

auf Ihre Haupttätigkeit Java-Datei.

Lösung von Mark Renouf nicht mir (mit Nexus 4 und Android 4.4). Es schlägt fehl, bei der Verwendung von Verknüpfungen, Verknüpfungen, die Hauptaktivität Label anstelle des App-Namen verwenden. Ich sah einige Anwendungen wie GMail und Google das funktioniert gut halten. Aber wenn Sie sie öffnen, merke ich, es ist wie ein Moment zwischen dem Titel leer ist und der Titel erscheint (die besser scheint als der Name App zu blinken, bevor Sie den Titel mit setTitle Einstellung ()).

So, hier ist die beste Lösung, die ich gefunden :

Erstellen Sie einen Stil, in dem die ActionBar nicht den Titel / label nicht zeigen:

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

Ich bin mit einer Navigationsleiste und mit einem Logo (weil ich ein Logo und ein Symbol für meine Anwendung verwenden). Sie können auch immer verwenden, aber nicht verwenden show . Dann in der AndroidManifest.xml, stellen Sie das Thema für die 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>

Dann wird in der onCreate () -Methode des MainActivity, stellen Sie den Titel Ihrer Aktionsleiste:

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

Nachdem es , können Sie anrufen:

getActionBar().setDisplayShowTitleEnabled(true);

Tricky aber wert.

Dies wird wahrscheinlich nicht erfüllen, was Sie tun wollen, aber haben Sie darüber nachgedacht, einen Begrüßungsbildschirm zu schaffen, dass Displays sehr kurz (mit dem Standardtitel) und startet dann Ihren neuen tatsächlichen „main“ Aktivität mit dem Titel Ihrer Wahl mit der setTitle(int) Methode? Ich habe nicht versucht, um zu sehen, ob es funktioniert, aber das könnte eine gute Arbeit rund um das schafft nicht zeigt die weniger als nahtlose Natur das, was Sie erreichen wollen.

Für alle mit Support / AppCompat Toolbar über das setSupportActionBar() Verfahren kann die Aktivität Titel in Toolbar XML eingestellt werden:

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

Dies wird außer Kraft gesetzt Anwendung und Aktivität Etiketten im Manifest.

android.support.v7.widget.Toolbar

Ich fand eine Abhilfe für dieses Problem:

   In manifest.xml
Schreiben Sie App-Name in der android:label der Launcher (Haupt-) Aktivität .
Dies wird das Etikett Ihrer Haupttätigkeit gleiche wie die der App-Label machen.
Dann werden in der onCreate() Funktion Ihrer Launcher (Haupt-) Aktivität schreibt diese Aussage

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

Schreiben Sie hier das Label, dass Sie Ihren Launcher (Haupt-) Aktivität geben wollen.

Sie können etwas tun:

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

Sie erhalten eine benutzerdefinierte Layout erstellen müssen, um den Titel zu halten. Es könnte so einfach sein wie (genannt my_title.xml in diesem Fall):

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

In Ihrer AndroidManifest.xml Datei, die Sie nur den Titel für die App einstellen müssen, was ist das, was im Launcher-Symbol angezeigt werden soll. Für Ihre Tätigkeit brauchen Sie nicht einen Titel dort zu setzen.

Der Launcher tatsächlich zeigt android: label und android: Symbol für Aktivität (n), dass declare

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

so Anwendung Etikett ist nichts.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top