Wie ändere ich den Titel und das Symbol der Android-Aktionsleiste?


225

Ich versuche einige Dinge auf der ActionBar in Android zu tun.

Ich habe bereits neue Elemente auf der rechten Seite der Aktionsleiste hinzugefügt.

Wie kann ich die linke Seite der Aktionsleiste ändern? Ich möchte das Symbol und den Text ändern und in der Aktionsleiste für die anderen Bildschirme eine "Zurück-Schaltfläche" hinzufügen

Android-Aktionsleiste

Antworten:


514

Dies ist sehr einfach zu erreichen

Wenn Sie den Code ändern möchten, rufen Sie an:

setTitle("My new title");
getActionBar().setIcon(R.drawable.my_icon);

Und stellen Sie die Werte nach Belieben ein.

Oder in der XML-Datei des Android-Manifests:

<activity android:name=".MyActivity" 
       android:icon="@drawable/my_icon" 
       android:label="My new title" />  

So aktivieren Sie die Zurück-Schaltfläche in Ihrer App:

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);

Der Code sollte alle in Ihrem Code platziert onCreatewerden, damit die Änderung der Beschriftung / des Symbols für den Benutzer transparent ist. In Wirklichkeit kann er jedoch während des gesamten Lebenszyklus der Aktivität überall aufgerufen werden.


23
Wenn Sie die Unterstützungsbibliothek zum Hinzufügen der Aktionsleiste verwenden, verwenden Sie getSupportActionBaranstelle von getActionBar.
Rick Pastoor

3
getActionBar().setHomeButtonEnabled(true)Verwendet API Level 14 oder getActionBar().setDisplayHomeAsUpEnabled(true)
höher

3
getSupportActionBar (). setDisplayShowTitleEnabled (true); vor setTitle ("123");
Jose Manuel Abarca Rodríguez

Wenn Sie den Code getActionBar () verwenden. SetIcon (R.drawable.my_icon); Kannst du es anklickbar machen?
Skitty

1
@ JoseManuelAbarcaRodríguez Danke, das hat mir gefehlt. In Kotlin: supportActionBar?.setDisplayShowTitleEnabled(true)dann supportActionBar?.title = "your title". Und es muss in onResume, nicht in onCreate, beim Erstellen der Aktivität mit gemacht werden startActivity.
Eric Aya

18

Damit ein einzelnes Symbol von allen Aktionsleisten verwendet werden kann, können Sie dies in Ihrem Android-Manifest tun.

<application
    android:logo="@drawable/Image">

    ...

</application>

1
danke- Ich wollte ein anderes Symbol für außerhalb der App (wie in "Alle Apps" zu sehen) und ein anderes Symbol links in der Aktionsleiste. Und das hat funktioniert. Manifest-Datei hat noch Android: icon = "@ drawable / ic_launcher"
Flobacca

2
Dies ist der richtige Weg, da pre-loadsdas Symbol programmgesteuert langsam eingestellt ist!
Muhammad Babar

11

Sie müssen nur diese 3 Codezeilen hinzufügen. Ersetzen Sie das Symbol durch Ihr eigenes Symbol. Wenn Sie Symbole generieren möchten, verwenden Sie diese

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);

11

In Android 5.0 raten Richtlinien zum Materialdesign von der Verwendung von Symbolen in actionBar ab

Fügen Sie zum Aktivieren den folgenden Code hinzu

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);

Gutschrift geht an den Autor dieses Artikels


9

Wenn Sie den Titel der Aktionsleiste ändern möchten, geben Sie einfach den folgenden 1-Zeilen-Code in onCreate () Ihrer Aktivität ein

getActionBar().setTitle("Test");

Wie kann ich diese Titeländerung animieren?
Srikar Reddy

7

Sie können das Symbol in Ihrem ändern, indem Sie ein beliebiges Symbol zu Ihren jeweiligen Zeichenordnern hinzufügen und dann diese Zeile in Ihrer AndroidManifest.xml-Datei ändern:

android:icon="@drawable/ic_launcher"

um mit dem Namen Ihres Symbols übereinzustimmen. Oder setzen Sie Ihr Symbol als ic_launcher, wenn es sich um dasselbe Symbol handelt. Fügen Sie die darin enthaltenen Zeichenfolgen in Ihrer Datei res / values ​​/ strings.xml hinzu oder ändern Sie sie. Ändern Sie dann noch einmal in Ihrer AndroidManifest.xml-Datei diese Zeile:

android:label="@string/app_name"

zu was auch immer die Zeichenfolge, die Sie in ihrem haben. Sie müssen dies für die gesamte Anwendung und für alle gewünschten Aktivitäten tun, aber die Zeilen sind dieselben.

Hoffe das hilft.


Welche Größe (dp) sollte dies android:iconim Aktivitäts-Tag haben?
Cuddlecheek

6
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);

5

Dafür können Sie dies auf zwei Arten tun: XML oder Java. Siehe hier: So ändern Sie den Text in der Aktionsleiste

So:

XML:

<activity android:name=".Hello_World"
              android:label="This is the Hello World Application">
</activity>

Java:

public class TitleBar extends Activity {
/** Called when the activity is first created. */
@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);
       }
 }
}

2
Um dies aus dem Code heraus zu tun, sollten Sie setTitle(CharSequence text)oder aufrufen setTitle(int titleRes). Verwenden requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)Sie diese Option nur, wenn Sie die gesamte Titelleiste durch Ihre eigene benutzerdefinierte Ansicht ersetzen möchten.
Karakuri

3

Für den festgelegten Titel :

getActionBar().setTitle("Title");

Für das Set-Symbol :

getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);

2

Ich habe den folgenden Aufruf verwendet onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle());

1

Fügen Sie den folgenden Code in eine onCreate-Funktion Ihrer Aktivität ein.

setTitle("NewName");

1

Diese Arbeit für mich:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);

0

Der Titel der Aktionsleiste verwendet standardmäßig die Bezeichnung der aktuellen Aktivität, Sie können sie jedoch auch programmgesteuert über festlegen ActionBar.setTitle().

Lesen Sie den Abschnitt "Verwenden des App-Symbols für die Navigation" im Entwicklerhandbuch der Aktionsleiste , um die Funktionen der Schaltfläche "Zurück" (genauer gesagt "Nach oben") zu implementieren .

Um das Symbol zu ändern, wird dies auch in der Anleitung behandelt. Kurz gesagt, in der Aktionsleiste wird das Bild angezeigt, das android:iconin Ihrem Manifest applicationoder activityElement enthalten ist, falls vorhanden. Die typische Vorgehensweise besteht darin, ein Anwendungssymbol (in all den verschiedenen benötigten Dichten) mit dem Namen zu erstellen ic_launcher.pngund es in Ihren drawable-*Verzeichnissen abzulegen .


0

Ich habe einen non-static method setTitle(CharSequence) cannot be referenced from a static contextFehler erhalten, weil ich setTitle()in der statischen PlaceholderFragment-Klasse verwendet habe. Ich habe es mit gelöstgetActivity().getActionBar().setTitle("new title");


0

Gehen Sie zum Manifest, in welcher bestimmten Aktivität Sie die Aktionsleiste ändern möchten. Titelname und schreiben Sie android: label = "Titelname"


0

Gehen Sie zur Datei AndroidManifest.xml . Finden Sie den <application>Tag Dort können Sie ein Attribut sehen

android:label="@string/app_name"

Gehen Sie nun zu res> values> strings.xml

Ändere das

<string name="app_name">MainActivity</string> 

zu

<string name="app_name">Your Desired Name</string>

Beispiel

AndroidManifest.xml

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubmitForm">

        </activity>
    </application>

string.xml

<resources>
    <string name="app_name">Your Desired Name</string>
    <string name="action_settings">Settings</string>
</resources>

0

Sie können auch wie folgt vorgehen:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.