it-swarm.com.de

Wie legen Sie die Titelfarbe für die neue Symbolleiste fest?

Ich verwende die neue v7-Toolbar und weiß nicht, wie ich die Farbe des Titels ändern kann. Ich habe den @Stil der Toolbar auf einen in styles.xml deklarierten Stil festgelegt und einen titleTextStyle mit einer textColor angewendet. Fehlt mir etwas? Ich codiere für Lollipop, teste aber gerade auf einem KitKat-Gerät.

styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="Android:windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>

    <style name="ActionBar" parent="Theme.AppCompat">
        <item name="Android:background">@color/actionbar_background</item>
        <item name="Android:titleTextStyle">@style/ActionBar.TitleTextStyle</item>
    </style>

    <style name="ActionBar.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="Android:textColor">@color/actionbar_title_text</item>
    </style>

</resources>

actionbar.xml:

<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/toolbar_actionbar"
    Android:layout_width="match_parent"
    Android:layout_height="?actionBarSize"
    style="@style/ActionBar"/>
92
Dennis

Option 1) Der schnelle und einfache Weg (nur Symbolleiste)

Seit appcompat-v7-r23 können Sie die folgenden Attribute direkt in Ihrer Toolbar oder ihrem Stil verwenden:

app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"

Wenn Ihr Mindest-SDK 23 ist und Sie die native Toolbar verwenden, ändern Sie einfach das Namespace-Präfix in Android.

In Java können Sie die folgenden Methoden verwenden:

toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);

Diese Methoden nehmen eine Farbe und keine Farbressourcen-ID an!

Option 2) Stil- und Designattribute der Symbolleiste überschreiben

layout/xxx.xml

<Android.support.v7.widget.Toolbar
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:minHeight="?attr/actionBarSize"
    Android:theme="@style/ThemeOverlay.MyApp.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    style="@style/Widget.MyApp.Toolbar.Solid"/>

values ​​/ styles.xml

<style name="Widget.MyApp.Toolbar.Solid" parent="Widget.AppCompat.ActionBar">
    <item name="Android:background">@color/actionbar_color</item>
    <item name="Android:elevation" tools:ignore="NewApi">4dp</item>
    <item name="titleTextAppearance">...</item>
</style>

<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
    <!-- Parent theme sets colorControlNormal to textColorPrimary. -->
    <item name="Android:textColorPrimary">@color/actionbar_title_text</item>
</style>

Hilfe! Meine Icons haben auch ihre Farbe geändert!

@PeterKnut berichtete, dass dies die Farbe der Überlaufschaltfläche, der Navigationsschaltfläche und der Zurück-Schaltfläche beeinflusst. Es ändert auch die Textfarbe von SearchView.

Zu den Symbolfarben: Die colorControlNormal erbt von 

  • Android:textColorPrimary für dunkle Motive (weiß auf schwarz)
  • Android:textColorSecondary für helle themen (schwarz auf weiß)

Wenn Sie dies auf das Motiv der Aktionsleiste anwenden, können Sie die Farbe des Symbols anpassen.

<item name="colorControlNormal">#de000000</item>

Es gab einen Fehler in appcompat-v7 bis r23, bei dem Sie auch das native Gegenstück wie folgt überschreiben mussten:

<item name="Android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>

Hilfe! Mein SearchView ist ein Durcheinander!

Hinweis: Dieser Abschnitt ist möglicherweise veraltet.

Da Sie das Such-Widget verwenden, das aus irgendeinem Grund einen anderen hinteren Pfeil (nicht visuell, technisch) als das in appcompat-v7 enthaltene verwendet, müssen Sie es manuell im App-Theme einstellen. Die Drawables der Support Library werden korrekt getönt. Sonst wäre es immer weiß.

<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>

Was den Suchansichtstext angeht ... gibt es keinen einfachen Weg. Nachdem ich die Quelle durchforstet hatte, fand ich einen Weg, um zur Textansicht zu gelangen. Ich habe das nicht getestet, also lass es mich bitte in den Kommentaren wissen, ob dies nicht funktioniert hat. 

SearchView sv = ...; // get your search view instance in onCreateOptionsMenu
// prefix identifier with "Android:" if you're using native SearchView
TextView tv = sv.findViewById(getResources().getIdentifier("id/search_src_text", null, null));
tv.setTextColor(Color.GREEN); // and of course specify your own color

Bonus: Überschreiben der ActionBar-Stil- und Designattribute

Ein geeignetes Styling für eine Standard-Aktionsleiste von appcompat-v7 würde folgendermaßen aussehen:

<!-- ActionBar vs Toolbar. -->
<style name="Widget.MyApp.ActionBar.Solid" parent="Widget.AppCompat.ActionBar.Solid">
    <item name="background">@color/actionbar_color</item> <!-- No prefix. -->
    <item name="elevation">4dp</item> <!-- No prefix. -->
    <item name="titleTextStyle">...</item> <!-- Style vs appearance. -->
</style>

<style name="Theme.MyApp" parent="Theme.AppCompat">
    <item name="actionBarStyle">@style/Widget.MyApp.ActionBar.Solid</item>
    <item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>
200
Eugen Pechanec

Hier ist meine Lösung, wenn Sie im Such-Widget nur die Titelfarbe und nicht die Textfarbe ändern müssen.

layout/toolbar.xml

<Android.support.v7.widget.Toolbar
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:background="@color/toolbar_bg"
    app:theme="@style/AppTheme.Toolbar"
    app:titleTextAppearance="@style/AppTheme.Toolbar.Title"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:minHeight="?attr/actionBarSize"/>

values ​​/ themes.xml

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="windowActionBar">false</item>
    </style>

    <style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.ActionBar">
        <!-- Customize color of navigation drawer icon and back arrow --> 
        <item name="colorControlNormal">@color/toolbar_icon</item>
    </style>

    <style name="AppTheme.Toolbar.Title" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
        <!-- Set proper title size -->
        <item name="Android:textSize">@dimen/abc_text_size_title_material_toolbar</item>
        <!-- Set title color -->
        <item name="Android:textColor">@color/toolbar_title</item>
    </style>
</resources>

Auf ähnliche Weise können Sie auch UntertitelTextAppearance einstellen.

35
Peter Knut

Wenn Sie API 23 und höher unterstützen, können Sie jetzt das Attribut titleTextColor verwenden, um die Titelfarbe der Symbolleiste festzulegen.

layout/toolbar.xml

<Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:titleTextColor="@color/colorPrimary"
        />

MyActivity.Java

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar)
toolbar.setTitleTextColor(Color.WHITE);
11
fractalwrench

Die Einstellung app:titleTextColor auf meinem Android.support.v7.widget.Toolbar funktioniert für mich unter Android 4.4 und auch für 6.0 mit com.Android.support:appcompat-v7:23.1.0

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent"
    Android:minHeight="?attr/actionBarSize"
    Android:background="?attr/colorPrimary"
    app:titleTextColor="@Android:color/white" />
9
hunyadym

Das ärgerte mich eine Weile und ich mochte keine der Antworten, also schaute ich auf die Quelle, um zu sehen, wie es funktioniert.

FractalWrench ist auf dem richtigen Weg, aber es kann unter API 23 verwendet werden und muss nicht in der Symbolleiste festgelegt werden.

Wie bereits gesagt, können Sie mit einen Stil in der Symbolleiste festlegen 

app:theme="@style/ActionBar"

und in diesem Stil können Sie die Titeltextfarbe mit festlegen 

<item name="titleTextColor">#00f</item>

für vor API 23 oder für 23+

<item name="Android:titleTextColor">your colour</item>

Volles XML

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_height="?attr/actionBarSize"
    Android:layout_width="match_parent"
    app:theme="@style/ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"/>


<style name="ActionBar" parent="@style/ThemeOverlay.AppCompat.ActionBar">
    <item name="Android:titleTextStyle">@style/ActionBarTextStyle</item>
    <item name="titleTextColor">your colour</item>
    <item name="Android:background">#ff9900</item>
</style>

Hier finden Sie alle Attribute, die für eine Symbolleiste festgelegt werden können

<declare-styleable name="Toolbar">
    <attr name="titleTextAppearance" format="reference" />
    <attr name="subtitleTextAppearance" format="reference" />
    <attr name="title" />
    <attr name="subtitle" />
    <attr name="gravity" />
    <attr name="titleMargins" format="dimension" />
    <attr name="titleMarginStart" format="dimension" />
    <attr name="titleMarginEnd" format="dimension" />
    <attr name="titleMarginTop" format="dimension" />
    <attr name="titleMarginBottom" format="dimension" />
    <attr name="contentInsetStart" />
    <attr name="contentInsetEnd" />
    <attr name="contentInsetLeft" />
    <attr name="contentInsetRight" />
    <attr name="maxButtonHeight" format="dimension" />
    <attr name="navigationButtonStyle" format="reference" />
    <attr name="buttonGravity">
        <!-- Push object to the top of its container, not changing its size. -->
        <flag name="top" value="0x30" />
        <!-- Push object to the bottom of its container, not changing its size. -->
        <flag name="bottom" value="0x50" />
    </attr>
    <!-- Icon drawable to use for the collapse button. -->
    <attr name="collapseIcon" format="reference" />
    <!-- Text to set as the content description for the collapse button. -->
    <attr name="collapseContentDescription" format="string" />
    <!-- Reference to a theme that should be used to inflate popups
         shown by widgets in the toolbar. -->
    <attr name="popupTheme" format="reference" />
    <!-- Icon drawable to use for the navigation button located at
         the start of the toolbar. -->
    <attr name="navigationIcon" format="reference" />
    <!-- Text to set as the content description for the navigation button
         located at the start of the toolbar. -->
    <attr name="navigationContentDescription" format="string" />
    <!-- Drawable to set as the logo that appears at the starting side of
         the Toolbar, just after the navigation button. -->
    <attr name="logo" />
    <!-- A content description string to describe the appearance of the
         associated logo image. -->
    <attr name="logoDescription" format="string" />
    <!-- A color to apply to the title string. -->
    <attr name="titleTextColor" format="color" />
    <!-- A color to apply to the subtitle string. -->
    <attr name="subtitleTextColor" format="color" />
</declare-styleable>
8
Stimsoni

Die einfachste Möglichkeit, die Toolbar-Titelfarbe in CollapsingToolbarLayout zu ändern.

Fügen Sie unten Stile zu CollapsingToolbarLayout hinzu

<Android.support.design.widget.CollapsingToolbarLayout
        app:collapsedTitleTextAppearance="@style/CollapsedAppBar"
        app:expandedTitleTextAppearance="@style/ExpandedAppBar">

styles.xml

<style name="ExpandedAppBar" parent="@Android:style/TextAppearance">
        <item name="Android:textSize">24sp</item>
        <item name="Android:textColor">@Android:color/black</item>
        <item name="Android:textAppearance">@style/TextAppearance.Lato.Bold</item>
    </style>

    <style name="CollapsedAppBar" parent="@Android:style/TextAppearance">
        <item name="Android:textColor">@Android:color/black</item>
        <item name="Android:textAppearance">@style/TextAppearance.Lato.Bold</item>
    </style>
3
Poras Bhardwaj

Das hat bei mir funktioniert 

<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="?attr/colorPrimary"
    Android:fitsSystemWindows="true"
    Android:minHeight="?attr/actionBarSize"
    app:navigationIcon="@drawable/ic_back"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:subtitleTextColor="@color/white"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:title="This week stats"
    app:titleTextColor="@color/white">


    <ImageView
        Android:id="@+id/submitEditNote"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentEnd="true"
        Android:layout_alignParentRight="true"
        Android:layout_gravity="right"
        Android:layout_marginRight="10dp"
        Android:src="@Android:drawable/ic_menu_manage" />
</Android.support.v7.widget.Toolbar>
2
Hitesh Sahu

Erstellen Sie eine Symbolleiste in Ihrer XML-Datei ... toolbar.xml:

<Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"

    </Android.support.v7.widget.Toolbar>

Fügen Sie dann Folgendes in Ihre toolbar.xml ein:

app:titleTextColor="@color/colorText"
app:title="@string/app_name">

Remeber @ color/colorText ist einfach Ihre color.xml-Datei mit dem Farbattribut colorText und Ihrer Farbe. Dies ist der beste Weg, um Ihre Strings aufzurufen, anstatt Ihre Farbe in der toolbar.xml fest zu kodieren. Sie haben auch andere Optionen, um Ihren Text zu ändern, beispielsweise: textAppearance ... etc ... geben Sie einfach app: text ... ein. Intelisense gibt Ihnen Optionen in Android Studio.

ihre letzte Symbolleiste sollte folgendermaßen aussehen:

 <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:layout_weight="1"
        Android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways"
        app:popupTheme="@style/Theme.AppCompat"
       app:subtitleTextAppearance="@drawable/icon"
        app:title="@string/app_name">
    </Android.support.v7.widget.Toolbar>

Hinweis: Diese Symbolleiste sollte sich in Ihrem activity_main.xml.Easy Peasie befinden

Eine weitere Möglichkeit besteht darin, alles in Ihrer Klasse zu machen:

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(Color.WHITE);

Viel Glück

2
RileyManda

Ändern Sie die Farbe 

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent"
    Android:background="?attr/colorPrimary"

/>

Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar);
        myToolbar.setTitleTextColor(ContextCompat.getColor(getApplicationContext(), R.color.Auth_Background));
        setSupportActionBar(myToolbar);
1
Mourad MAMASSI
public class MyToolbar extends Android.support.v7.widget.Toolbar {

public MyToolbar(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    super.onLayout(changed, l, t, r, b);
    AppCompatTextView textView = (AppCompatTextView) getChildAt(0);
    if (textView!=null) textView.setTextAppearance(getContext(), R.style.TitleStyle);
}

}

Oder einfach von MainActivity verwenden:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbarMain);
setSupportActionBar(toolbar);
((AppCompatTextView) toolbar.getChildAt(0)).setTextAppearance(this, R.style.TitleStyle);

style.xml

<style name="TileStyle" parent="TextAppearance.AppCompat">
    <item name="Android:textColor">@color/White</item>
    <item name="Android:shadowColor">@color/Black</item>
    <item name="Android:shadowDx">-1</item>
    <item name="Android:shadowDy">1</item>
    <item name="Android:shadowRadius">1</item>
</style>
0
IQ.feature

Sehr einfach, das hat für mich funktioniert (Titel und Symbol weiß):

    <Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="56dp"
    Android:background="@color/PrimaryColor"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    Android:elevation="4dp" />
0
Clever Almeida

Wenn Sie appcompat-v7 app verwenden können: titleTextColor = "# fff"> 

<Android.support.v7.widget.Toolbar  
        Android:id="@+id/toolbar"  
        Android:layout_width="match_parent"  
        Android:layout_height="wrap_content"  
        Android:background="@color/colorPrimary"   
        Android:visibility="gone"   
        app:titleTextColor="#fff">   
    </Android.support.v7.widget.Toolbar>   
0
Surender Kumar

Mach es mit toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);

// In diesem Stil können Sie Ihr Farbschema anpassen

 <style name="TitleTextStyle" parent="@Android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="Android:fontFamily">@string/you_font_family</item>
    <item name="Android:textStyle">normal</item>
    <item name="Android:textAppearance">@style/you_text_style</item>
    <item name="Android:textColor">#000000</item>
    <item name="Android:textSize">20sp</item>
</style>
0
shaby
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
          Android:layout_width="match_parent"
          Android:layout_height="wrap_content"
          xmlns:app="http://schemas.Android.com/apk/res-auto">

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:titleTextColor="@color/white"
    Android:background="@color/green" />

0
Vipin Sharma