Ich denke, Sie müssen keinen benutzerdefinierten Titel verwenden, um die Hintergrundfarbe in die Titelleiste zu ändern. Überprüfen Sie diesen Beitrag
Deepthi Jabili
Ich würde mir Edwinfads Antwort anstatt der veralteten akzeptierten ansehen.
zgc7009
Antworten:
186
In diesem Thread können Sie zunächst eine eigene Titelleiste in einer XML-Datei erstellen und in Ihren Aktivitäten verwenden
Bearbeiten
Hier ist eine kurze Zusammenfassung des Inhalts des obigen Links - Dies dient nur zum Festlegen der Farbe des Textes und des Hintergrunds der Titelleiste - keine Größenänderung, keine Schaltflächen, nur das einfachste Beispiel
res / layout / mytitle.xml - Dies ist die Ansicht, die die Titelleiste darstellt
<?xml version="1.0" encoding="utf-8"?><TextViewxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/myTitle"android:text="This is my new title"android:layout_width="fill_parent"android:layout_height="fill_parent"android:textColor="@color/titletextcolor"/>
res / values / theme.xml - Wir möchten das Standard-Android- Design beibehalten und müssen nur die Hintergrundfarbe des Titelhintergrunds ändern. Also erstellen wir ein Thema, das das Standardthema erbt, und setzen den Hintergrundstil auf unseren eigenen Stil.
Legen Sie in der Datei AndroidMANIFEST.xml das Designattribut entweder in den Anwendungs-Tags (für die gesamte Anwendung) oder in den Aktivitäts-Tags (nur für diese Aktivität) fest
Die meiste Zeit ist das Bereitstellen eines Links eine sehr billige und auf Stackoverflow nicht wirklich beliebte Antwort. Versuchen Sie, etwas Wissen über den Link auf diese Seite zu erlangen. Sie erhalten immer mehr Wissen in der Community, und selbst wenn der Link nicht funktioniert, enthält Ihre Antwort einige Suchbegriffe, die andere Personen in die richtige Richtung lenken können.
Janusz
7
@ Janusz: Sie haben völlig Recht - Also habe ich den Beitrag mit dem einfachsten Beispiel aktualisiert, damit die Leute anfangen können, anstatt den Thread im obigen Link
durchzulesen
3
Nach dem Überschreiben des Android-Stils müssen Sie den benutzerdefinierten Titel nicht aus dem Code hinzufügen, wenn Sie nur die Hintergrundfarbe ändern möchten
Janusz
1
Wie Janusz sagte, benötigen Sie keine benutzerdefinierte Ansicht, wenn Sie nur den verwendeten Stil überschreiben möchten (ohne neue Ansichten hinzuzufügen). In diesem Fall müssen Sie auch kein FEATURE_CUSTOM_STYLE anfordern. Schließlich können Sie den Stil auf Anwendungsebene definieren, um ihn auf alle Ihre Aktivitäten gleichzeitig anzuwenden. Danke übrigens für den Code.
Eric Kok
2
Dadurch wird die Hintergrundfarbe des Titels nicht geändert. Nur die Textfarbe wird geändert. auch wenn ich die Farbe der Titelleiste ändere <color name = "titlebackgroundcolor"> # 3232CD </ color>. Mache ich etwas falsch?
Shaista Naaz
18
Vielen Dank für diese klare Erklärung, aber ich möchte Ihrer Antwort etwas mehr hinzufügen, indem ich eine verknüpfte Frage stelle (ich möchte nicht wirklich einen neuen Beitrag verfassen, da dieser der Keller meiner Frage ist).
Ich deklariere meine Titelleiste in einer Superklasse, aus der alle meine anderen Aktivitäten Kinder sind, um die Farbe der Leiste nur einmal ändern zu müssen. Ich möchte auch ein Symbol hinzufügen und den Text in der Leiste ändern. Ich habe einige Tests durchgeführt und es geschafft, entweder das eine oder das andere, aber nicht beide gleichzeitig zu ändern (mit setFeatureDrawable und setTitle). Die ideale Lösung wäre natürlich, der Erklärung im Thread im Link zu folgen, aber da ich in einer Oberklasse deklariere, habe ich ein Problem aufgrund des Layouts in setContentView und der R.id.myCustomBar, denn wenn i Denken Sie daran, ich kann setContentView nur einmal aufrufen ...
EDIT
Meine Antwort gefunden:
Für diejenigen, die wie ich gerne mit Superklassen arbeiten, weil es großartig ist, ein Menü überall in einer App verfügbar zu machen, funktioniert es hier genauso.
Es gibt eine andere Möglichkeit, die Hintergrundfarbe zu ändern. Dies ist jedoch ein Hack und kann in zukünftigen Android-Versionen fehlschlagen, wenn die Ansichtshierarchie des Fensters und sein Titel geändert werden. In einem solchen Fall stürzt der Code jedoch nicht ab. Verpassen Sie einfach nicht die gewünschte Farbe.
Führen Sie in Ihrer Aktivität wie bei onCreate Folgendes aus:
sehr gut und auch einfach. Aber ich möchte Sie eine Sache fragen, dass dieser es aus Code macht, damit es etwas verzögert wird. Um eine solche Situation zu vermeiden, muss ich alles in die XML und nichts in den Code schreiben. Kannst du mich bitte dazu führen?
Shaista Naaz
Ich denke, Sie haben die Lösung in der oben ausgewählten Antwort. Sie müssen ein benutzerdefiniertes Thema für die Aktivität definieren und dessen Android: windowTitleBackgroundStyle auf die gewünschte Farbe einstellen.
Mikeplate
7
Dieser Code hilft, den Hintergrund der Titelleiste in Android programmgesteuert zu ändern. Ändern Sie die Farbe in eine beliebige Farbe.
Dies wurde in API 11 (3.0 Honeycomb) eingeführt, das an dieser Stelle sicherlich veraltet genug ist, um dies als gültige Option zu betrachten.
zgc7009
Aber ich verwende es immer noch in all meinen letzten Anwendungen mit targetSdkVersion = "23", ohne veraltete Informationen zu erhalten.
Edwinfad
Es ist absolut 100% in Ordnung, dies zu verwenden. Es wurde nicht durch irgendetwas ersetzt, aber die Verwendung vor API 11 (was nur sehr wenige Leute tun werden) sollte vermieden werden, zumindest ohne eine Kompatibilitätsbibliothek.
zgc7009
Notiert. @ zgc7009
Edwinfad
1
Verwenden Sie stattdessen getSupportActionBar (), wenn Sie AppCompatActivity
Wie / wo kann ich eine benutzerdefinierte / eigene Titelleiste erstellen?
Thizzer
2
Werfen Sie einen Blick in platforms/android-2.1/data/res/layout/screen.xmldas SDK. Es scheint dort einen Titel zu definieren. Sie können solche Layouts häufig untersuchen und die style="?android:attr/windowTitleStyle"
Stile ausleihen
, die Sie dann verwenden und in Ihren eigenen Textansichten überschreiben können.
Möglicherweise können Sie sogar den Titel für die direkte Optimierung auswählen, indem Sie Folgendes tun:
TextView title =(TextView)findViewById(android.R.id.title);
Funktioniert das noch mit Lollipop? titleView scheint für mich null zurückzugeben.
WORMSS
1
Es gibt eine einfachere Alternative, die Farbe der Titelleiste zu ändern, indem Sie die von Google bereitgestellte v7-Appcompat-Unterstützungsbibliothek verwenden.
Seit Android 5.0 (API Level 21) scheinen die Dinge besser / einfacher geworden zu sein.
Ich denke, was Sie suchen, ist ungefähr so:
<stylename="AppTheme"parent="AppBaseTheme"><!-- Top-top notification/status bar color:--><!--<item name="colorPrimaryDark">#000000</item>--><!-- App bar color:--><item name="colorPrimary">#0000FF</item></style>
Antworten:
In diesem Thread können Sie zunächst eine eigene Titelleiste in einer XML-Datei erstellen und in Ihren Aktivitäten verwenden
Bearbeiten
Hier ist eine kurze Zusammenfassung des Inhalts des obigen Links - Dies dient nur zum Festlegen der Farbe des Textes und des Hintergrunds der Titelleiste - keine Größenänderung, keine Schaltflächen, nur das einfachste Beispiel
res / layout / mytitle.xml - Dies ist die Ansicht, die die Titelleiste darstellt
res / values / theme.xml - Wir möchten das Standard-Android- Design beibehalten und müssen nur die Hintergrundfarbe des Titelhintergrunds ändern. Also erstellen wir ein Thema, das das Standardthema erbt, und setzen den Hintergrundstil auf unseren eigenen Stil.
res / values / styles.xml - Hier legen wir das Thema so fest, dass die gewünschte Farbe für den Titelhintergrund verwendet wird
res / values / color.xml - Stellen Sie hier die gewünschte Farbe ein
Legen Sie in der Datei AndroidMANIFEST.xml das Designattribut entweder in den Anwendungs-Tags (für die gesamte Anwendung) oder in den Aktivitäts-Tags (nur für diese Aktivität) fest
Aus der Aktivität (CustomTitleBar genannt):
quelle
Vielen Dank für diese klare Erklärung, aber ich möchte Ihrer Antwort etwas mehr hinzufügen, indem ich eine verknüpfte Frage stelle (ich möchte nicht wirklich einen neuen Beitrag verfassen, da dieser der Keller meiner Frage ist).
Ich deklariere meine Titelleiste in einer Superklasse, aus der alle meine anderen Aktivitäten Kinder sind, um die Farbe der Leiste nur einmal ändern zu müssen. Ich möchte auch ein Symbol hinzufügen und den Text in der Leiste ändern. Ich habe einige Tests durchgeführt und es geschafft, entweder das eine oder das andere, aber nicht beide gleichzeitig zu ändern (mit setFeatureDrawable und setTitle). Die ideale Lösung wäre natürlich, der Erklärung im Thread im Link zu folgen, aber da ich in einer Oberklasse deklariere, habe ich ein Problem aufgrund des Layouts in setContentView und der R.id.myCustomBar, denn wenn i Denken Sie daran, ich kann setContentView nur einmal aufrufen ...
EDIT Meine Antwort gefunden:
Für diejenigen, die wie ich gerne mit Superklassen arbeiten, weil es großartig ist, ein Menü überall in einer App verfügbar zu machen, funktioniert es hier genauso.
Fügen Sie dies einfach Ihrer Oberklasse hinzu:
(Sie müssen die Textansicht als geschützte Klassenvariable deklarieren.)
Und dann ist die Stärke davon, dass Sie überall in Ihrer App (wenn zum Beispiel alle Ihre Aktivitäten Kinder dieser Klasse sind) nur anrufen müssen
und Ihre Titelleiste wird bearbeitet.
Das in meinem Fall zugeordnete XML lautet (R.layout.customtitlebar):
quelle
Es gibt eine andere Möglichkeit, die Hintergrundfarbe zu ändern. Dies ist jedoch ein Hack und kann in zukünftigen Android-Versionen fehlschlagen, wenn die Ansichtshierarchie des Fensters und sein Titel geändert werden. In einem solchen Fall stürzt der Code jedoch nicht ab. Verpassen Sie einfach nicht die gewünschte Farbe.
Führen Sie in Ihrer Aktivität wie bei onCreate Folgendes aus:
quelle
Dieser Code hilft, den Hintergrund der Titelleiste in Android programmgesteuert zu ändern. Ändern Sie die Farbe in eine beliebige Farbe.
quelle
Mit dem obigen Code können Sie versuchen, den Titel anstelle der Titelleiste zu verwenden Dies sich auf alle Aktivitäten in Ihrer Anwendung aus
quelle
Ich nehme an nein. Sie können titellose Aktivitäten erstellen und eine eigene Titelleiste im Aktivitätslayout erstellen.
Überprüfen Sie dies , Zeile 63 und darunter:
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)
Legt die benutzerdefinierte Ansicht anstelle der Standardtitelansicht fest.
quelle
Werfen Sie einen Blick in
platforms/android-2.1/data/res/layout/screen.xml
das SDK. Es scheint dort einen Titel zu definieren. Sie können solche Layouts häufig untersuchen und diestyle="?android:attr/windowTitleStyle"
Stile ausleihen , die Sie dann verwenden und in Ihren eigenen Textansichten überschreiben können.Möglicherweise können Sie sogar den Titel für die direkte Optimierung auswählen, indem Sie Folgendes tun:
quelle
Versuchen Sie es mit dem folgenden Code
Verwenden Sie auch diesen Link, der sehr nützlich ist: http://nathanael.hevenet.com/android-dev-changing-the-title-bar-background/
quelle
Es gibt eine einfachere Alternative, die Farbe der Titelleiste zu ändern, indem Sie die von Google bereitgestellte v7-Appcompat-Unterstützungsbibliothek verwenden.
Unter diesem Link erfahren Sie, wie Sie diese Support-Bibliothek einrichten : https://developer.android.com/tools/support-library/setup.html
Sobald Sie dies getan haben, reicht es aus, der Datei res / values / styles.xml die folgenden Zeilen hinzuzufügen:
(unter der Annahme, dass "titlebackgroundcolor" in Ihrer res / values / colours.xml definiert ist, z.
)
quelle
Seit Android 5.0 (API Level 21) scheinen die Dinge besser / einfacher geworden zu sein.
Ich denke, was Sie suchen, ist ungefähr so:
Siehe hier als Referenz:
https://developer.android.com/training/material/theme.html#ColorPalette
quelle
Ich habe dies getan, indem ich die Stilfarbwerte in "res" -> "values" -> "colours.xml" geändert habe.
Dadurch werden die Farben für das gesamte Projekt geändert, was für mich in Ordnung ist.
quelle
du kannst es benutzen.
quelle
Fügen Sie diesen Code nach setContentView oder in onCreate ein
Wenn Sie einen Farbcode haben, verwenden Sie diesen;
Wenn Sie einen bestimmten Code aus der Farbbibliothek wünschen, verwenden Sie diesen;
quelle