it-swarm-eu.dev

Jak nastavíte barvu nadpisu pro nový panel nástrojů?

Používám nový v7 Toolbar a pro život mě nemůže přijít na to, jak změnit barvu názvu. Nastavil jsem @style Toolbaru na styl deklarovaný v styles.xml a aplikován titleTextStyle s textemColor. Uniká mi něco? Jsem kódování pro Lollipop, ale testování v současné době na zařízení KitKat.

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

Možnost 1) Rychlý a snadný způsob (pouze panel nástrojů)

Protože appcompat-v7-r23 můžete použít následující atributy přímo ve vašem Toolbar nebo jeho stylu:

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

Pokud je vaše minimální SDK 23 a používáte nativní Toolbar, stačí změnit předponu oboru názvů na Android.

V jazyce Java můžete použít následující metody:

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

Tyto metody mají barvu int není ID zdroje barev!

Možnost 2) Přepsat atributy panelu nástrojů a motivů

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>

Pomoc! Moje ikony také měnily barvu!

@PeterKnut oznámil, že to ovlivňuje barvu tlačítka přetečení, tlačítka navigační zásuvky a tlačítka zpět. Změní také barvu textu SearchView.

Pokud jde o barvy ikon: colorControlNormal zdědí od 

  • Android:textColorPrimary pro tmavé motivy (bílá na černém pozadí)
  • Android:textColorSecondary pro světlá témata (černá na bílém)

Použijete-li toto téma na motiv panelu akce, můžete upravit barvu ikony.

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

Došlo k chybě v aplikaci appcompat-v7 až do verze r23, která vyžadovala, abyste také přepsali nativní podobu takto:

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

Pomoc! Můj SearchView je nepořádek!

Poznámka: Tato sekce je možná zastaralá.

Protože používáte widget pro vyhledávání, který z nějakého důvodu používá jinou šipku zpět (ne vizuálně, technicky) než ten, který je součástí aplikace appcompat-v7, musíte jej nastavit ručně v motivu aplikace. Zásuvky podpůrné knihovny jsou vybarveny správně. Jinak by to bylo vždy bílé.

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

Pokud jde o text hledaného pohledu ... neexistuje snadný způsob. Po kopání zdrojem jsem našel způsob, jak se dostat do textového pohledu. Nezkoušel jsem to tak, dejte mi prosím vědět v komentářích, pokud to nefungovalo. 

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: Přepíše atributy stylu ActionBar a motivu

Správný styl pro výchozí akční panel appcompat-v7 by vypadal takto:

<!-- 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

Zde je moje řešení, pokud potřebujete změnit pouze barvu názvu a ne barvu textu ve vyhledávacím widgetu.

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"/>

hodnoty/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>

Podobným způsobem můžete nastavit také subtitleTextAppearance.

35
Peter Knut

Pokud podporujete rozhraní API 23 a vyšší, můžete nyní použít atribut titleTextColor pro nastavení barvy názvu panelu nástrojů.

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

Nastavení app:titleTextColor na mém Android.support.v7.widget.Toolbar pracuje pro mě v Androidu 4.4 a na 6.0 také s 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

Chvíli to bylo otravné a nelíbila se mi žádná z odpovědí, takže jsem se podíval na zdroj, abych viděl, jak to funguje.

FractalWrench je na správné cestě, ale může být použit pod rozhraním API 23 a nemusí být nastaven na panelu nástrojů.

Jak řekli jiní, můžete nastavit styl na panelu nástrojů pomocí 

app:theme="@style/ActionBar"

a v tomto stylu můžete nastavit barvu textu nadpisu pomocí 

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

pro pre API 23 nebo pro 23+

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

Plné 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>

Heres všechny atributy, které lze nastavit na panelu nástrojů

<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

Nejjednodušší způsob, jak změnit Toolbar barvu názvu pomocí CollapsingToolbarLayout.

Přidat níže uvedené styly do CollapsingToolbarLayout

<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

To pro mě fungovalo 

<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

Vytvořit panel nástrojů ve vašem xml ... toolbar.xml:

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

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

Poté přidejte do panelu nástrojů následující text: xml:

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

Remeber @ color/colorText je jednoduše váš soubor color.xml s barevným atributem nazvaný colorText a vaše color.This je nejlepší způsob, jak volat vaše řetězce spíše než hardcoding vaše barvy uvnitř toolbar.xml. Máte také další možnosti pro úpravu textu, například: textAppearance ... atd ... stačí zadat app: text ... a intelisense vám možnosti v Android studiu.

poslední panel nástrojů by měl vypadat takto:

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

Poznámka: Tento panel nástrojů by měl být uvnitř vaší aktivity_main.xml.Easy Peasie

Další možností je udělat vše ve vaší třídě:

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

Hodně štěstí

2
RileyManda

Pro změnu barvy 

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

}

Nebo jednoduché použití z MainActivity:

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

Velmi jednoduché, to fungovalo pro mě (název a ikona bílá):

    <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

Pokud můžete použít appcompat-v7 app: 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

Udělej to s toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);

// toto je styl, kde si můžete přizpůsobit své barevné schéma

 <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