style - xamarin forms android toolbar text color




ActionBar-Textfarbe (12)

Am einfachsten geht es in der styles.xml.

Die Vorlage "styles.xml" von Google generiert derzeit Folgendes:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

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:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>

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:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
</style>


<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">@android:color/darker_gray</item>
</style>

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

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?


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

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Material.Light">
        <!-- Customize your theme here. -->
        <item name="android:textColorPrimary">@color/actionbar-text-color</item>
    </style>
</resources>    

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

<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorAccent">@color/Button_color</item>
    <item name="android:editTextStyle">@style/EditTextStyle</item>
    <item name="android:typeface">monospace</item>
    <item name="android:windowActionBar">true</item>
    <item name="colorPrimary">@color/Title_Bar_Color</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>

</style>

<style name="EditTextStyle" parent="Widget.AppCompat.EditText"/>

<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="titleTextStyle">@style/ActionBarTitleText</item>
    <item name="android:background">@color/Title_Bar_Color</item>
    <item name="background">@color/Title_Bar_Color</item>
    <item name="subtitleTextStyle">@style/ActionBarSubTitleText</item>
</style>

<style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/solid_white</item>
    <item name="android:textSize">12sp</item>
</style>

<style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
    <item name="android:textColor">@color/solid_white</item>
    <item name="android:textSize">12sp</item>
</style>

Ändern Sie die erforderlichen Farben, damit es funktioniert


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 [email protected]
 *
 */ 
 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();
    }

}

Eine nette Lösung ist, einen SpannableStringBuilder zu verwenden und die Farbe so einzustellen. Sie können sogar verschiedene Farben 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 ()?


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

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


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.

<!--Material design primary colors-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
    <item name="android:navigationBarColor">@color/primary_dark</item>
    <item name="actionBarTheme">@style/AppBaseTheme.Toolbar</item>
</style>

<!--Action bar-->
<style name="AppBaseTheme.Toolbar" parent="Widget.AppCompat.ActionBar.Solid">
    <item name="android:textColorPrimary">@color/action_bar_text</item>
    <item name="colorControlNormal">@color/action_bar_text</item>
</style>

Ich habe es mit einem einfachen Zeilencode gemacht

actionBar.setTitle(Html.fromHtml("<font color='#ff0000'>ActionBartitle </font>"));

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"?>
<!-- For honeycomb and up -->
<resources>

    <style name="myTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/myTheme.ActionBar</item>
        <item name="android:actionMenuTextColor">@color/actionBarText</item>
    </style>

    <style name="myTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">@drawable/actionbarbground</item>
        <item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item>
    </style>

    <style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance">
        <item name="android:textColor">@color/actionBarText</item>
    </style>

</resources>

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


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

ps:

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionMenuTextColor">@color/actionMenuTextColor</item>
</style>

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

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));  

oder

getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));




android-text-color