ActionBar-Textfarbe

Wie kann ich die Textfarbe der ActionBar ändern? Ich habe das Holo Light Theme geerbt, ich bin in der Lage, den Hintergrund der ActionBar zu ändern, aber ich finde nicht heraus, was das zu verändernde Attribut ist, um die Textfarbe zu ändern.


Ok, ich kann die Textfarbe mit dem Attribut android: textColorPrimary ändern, aber es ändert auch die Textfarbe des Dropdown-Menüs, das angezeigt wird, wenn auf den ActionBar-Schaltflächen ein Überlauf auftritt. Irgendeine Idee, wie man die Farbe dieses Dropdown-Menüs / Liste ändert?

   

    Ok, ich habe einen besseren Weg gefunden. Ich kann jetzt nur die Farbe des Titels ändern. Sie können auch den Untertitel optimieren.

    Hier ist meine styles.xml:

    < ?xml version="1.0" encoding="utf-8"?>      

    Ich hatte das selbe Problem wie du, es ist ein Holo.Light-Thema, aber ich wollte die ActionBar-Farbe stylen, also musste ich auch die Textfarbe ändern und auch Titel und Menüs. Am Ende ging ich zum git hub und schaute mir den Quellcode an, bis ich den verdammt korrekten Stil fand:

     < ?xml version="1.0" encoding="utf-8"?>       

    Jetzt musst du nur noch @color/actionBarText und @drawable/actionbarbground setzen, was du willst!

    Ich habe einen Weg gefunden, der mit jedem Geschmack von ActionBar ( Sherlock , Compat und Native ) gut funktioniert:

    Verwenden Sie einfach html , um den Titel festzulegen und die Textfarbe anzugeben. Um beispielsweise die ActionBar-Textfarbe auf Rot zu setzen, tun Sie Folgendes :

     getActionBar()/* or getSupportActionBar() */.setTitle(Html.fromHtml("" + getString(R.string.app_name) + "")); 

    Sie können auch den roten Hex-Code #FF0000 anstelle des Wortes red . Wenn Sie Probleme damit haben, finden Sie unter Android Html.fromHtml (String) funktioniert nicht für Text .


    Wenn Sie eine Farbressource verwenden möchten, kann dieser Code darüber hinaus verwendet werden, um den richtigen HEX-String zu erhalten und das Alpha bei Bedarf zu entfernen (das Font- Tag unterstützt kein Alpha):

     int orange = getResources().getColor(R.color.orange); String htmlColor = String.format(Locale.US, "#%06X", (0xFFFFFF & Color.argb(0, Color.red(orange), Color.green(orange), Color.blue(orange)))); 

    Die ActionBar ID ist nicht direkt verfügbar, also musst du hier ein wenig hacken.

     int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android"); if (actionBarTitleId > 0) { TextView title = (TextView) findViewById(actionBarTitleId); if (title != null) { title.setTextColor(Color.RED); } } 

    Ich habe es mit einem einfachen Zeilencode gemacht

     actionBar.setTitle(Html.fromHtml("ActionBartitle ")); 

    Fügen Sie es dem Stamm der Aktionsleiste hinzu. Ich hatte dieses Problem.

         

    actionMenuTextColorÄndert die Textfarbe für den Text der Widget.Styled.ActionBar Es funktionierte nie, wenn es Teil der Widget.Styled.ActionBar , also musste ich es zum Stamm hinzufügen. Andere 2 Attribute ändern Titel und Untertitel einer Aktionsleiste.

    Das Festlegen einer HTML-Zeichenfolge in der Aktionsleiste funktioniert nicht mit dem Material-Thema in SDK v21 +

    Wenn Sie es ändern möchten, sollten Sie die primäre Textfarbe in Ihrer style.xml festlegen

         

    Es ist ein altes Thema, aber für zukünftige Leser macht die Verwendung von ToolBar alles sehr einfach:

     Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar); toolbar.setTitle(R.string.app_name); toolbar.setTitleTextColor(getResources().getColor(R.color.someColor)); setSupportActionBar(toolbar); 

    Wenn Sie den Untertitel auch stylen möchten, fügen Sie diesen einfach in Ihrem benutzerdefinierten Stil hinzu.

     @style/MyTheme.ActionBar.TitleTextStyle 

    Personen, die nach dem gleichen Ergebnis für die AppCompat Bibliothek suchen, habe ich verwendet:

     < ?xml version="1.0" encoding="utf-8"?>       

    Am einfachsten geht es in der styles.xml.

    Die Vorlage “styles.xml” von Google generiert derzeit Folgendes:

      

    Wenn Sie wie gezeigt eine weitere Zeile vor dem schließenden Tag hinzufügen, ändert sich die Textfarbe so, wie sie mit einer dunklen ActionBar aussehen sollte:

      

    Wenn Sie die Farbe an etwas anderes anpassen möchten, können Sie entweder Ihre eigene Farbe in colors.xml angeben oder sogar eine integrierte Farbe von Android mit dem Attribut android: textColorPrimary verwenden:

       

    Hinweis: Dies ändert die Farbe des Titels und auch die Titel beliebiger Menüelemente, die in der ActionBar angezeigt werden.

    Dies ist die Lösung, die ich verwendet habe, nachdem ich alle Antworten überprüft habe

           

    Ändern Sie die erforderlichen colors, damit es funktioniert

    Ich habe den Weg gefunden, es gut zu machen, ohne ein eigenes Layout für API> = 21 zu erstellen.

    Es wird nur Texte färben und Zeichen in der Aktionsleiste steuern.

    Hoffe, dass es für jemanden nützlich sein wird.

         

    Diese function funktioniert gut

     private void setActionbarTextColor(ActionBar actBar, int color) { String title = actBar.getTitle().toString(); Spannable spannablerTitle = new SpannableString(title); spannablerTitle.setSpan(new ForegroundColorSpan(color), 0, spannablerTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); actBar.setTitle(spannablerTitle); } 

    dann benutze es nur füttere es deine Aktionsleiste und die neue Farbe ie

     ActionBar actionBar = getActionBar(); // Or getSupportActionBar() if using appCompat int red = Color.RED setActionbarTextColor(actionBar, red); 

    Probieren Sie viele Methoden, in der niedrigen Version der API, eine praktikable Methode ist @color/your_color und verwenden Sie nicht den Android-Namespace, Hoffnung kann Ihnen helfen

    ps:

       

    Versuchen Sie, dies in Ihrer Aktivität onCreate hinzuzufügen. functioniert auf fast jeder Android-Version.

      actionBar.setTitle(Html.fromHtml("Your Title")); 

    oder

     getSupportActionBar().setTitle(Html.fromHtml("Your Title")); 

    Eine nette Lösung ist, einen SpannableStringBuilder zu verwenden und die Farbe so einzustellen. Sie können sogar verschiedene colors für verschiedene Teile der Zeichenfolge verwenden, Bilder hinzufügen usw.

    Getestet mit der neuen Support-Bibliothek.

    Siehe Android: Färbe Teil einer Zeichenkette mit TextView.setText ()?

    Dies ist nicht die empfohlene Lösung, da ich in Android-API hier bin, aber wie meine Anwendung benötigt, um das Thema dynmically auf Bedingungen xml hier nicht möglich ändern, also muss ich dies tun. Aber diese Lösung funktioniert sehr gut.

    Lösung:–

      /** * * @author Kailash Dabhi * @email kailash09dabhi@gmail.com * */ public static void setActionbarTextColor(Activity activity, int color) { Field mActionViewField; try { mActionViewField = activity.getActionBar().getClass() .getDeclaredField("mActionView"); mActionViewField.setAccessible(true); Object mActionViewObj = mActionViewField.get(activity .getActionBar()); Field mTitleViewField = mActionViewObj.getClass().getDeclaredField( "mTitleView"); mTitleViewField.setAccessible(true); Object mTitleViewObj = mTitleViewField.get(mActionViewObj); TextView mActionBarTitle = (TextView) mTitleViewObj; mActionBarTitle.setTextColor(color); // Log.i("field", mActionViewObj.getClass().getName()); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } } 

    Für Android 5 (Lollipop) müssen Sie Android: actionBarPopupTheme verwenden , um die textColor für das Überlaufmenü festzulegen .

    Viele Antworten sind veraltet, daher aktualisiere ich den Thread und zeige, wie man Textfarbe und Hintergrundfarbe in der ActionBar (Toolbar) und im ActionBar Popup-Menü ändert.

    Der neueste Ansatz in Android (ab Mai 2018) bei der Arbeit mit der Aktionsleiste (Toolbar) ist die Verwendung von Theme mit NoActionBar und die Verwendung der Toolbar.

    also hier ist was du brauchst:

    1. In Aktivität (die AppCompatActivity erweitert) deklarieren Sie die Symbolleiste:

       Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(myToolbar); 
    2. Fügen Sie Toolbar in das XML-Layout der Aktivität hinzu. Hier werden wir unsere benutzerdefinierte (überschriebene Themen), Notiz android:theme="@style/ThemeOverlay.AppTheme.ActionBar" und app:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu" , sie werden den Trick tun.

        
    3. In Ihrer styles.xml müssen Sie diese beiden Stile überschreiben, um benutzerdefinierte colors festzulegen:

          

    Das ist es Leute

    PS: Wenn du mich fragst, würde ich sagen: JA, dieses ganze Thema Ding ist eine höllische Sauerei.