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

Allan Ramírez
quelle

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.

dymmeh
quelle
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>
Akshat Agarwal
quelle
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);
Sagar Devanga
quelle
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

Azzy
quelle
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");
Jabbir Basha
quelle
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.

RobStemen
quelle
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);
Alessandro Caliaro
quelle
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);
       }
 }
}
Miloš
quelle
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);
Bhaumik Sathvara
quelle
2

Ich habe den folgenden Aufruf verwendet onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle());
AmandaHLA
quelle
1

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

setTitle("NewName");
Chandrahasa Rai
quelle
1

Diese Arbeit für mich:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);
Ram Chhabra
quelle
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 .

CloudyMusic
quelle
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");

user4757345
quelle
0

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

Abhishek Rajpurohit
quelle
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>
Kartik Ganiga
quelle
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")
    }
Naresh Pawar
quelle