2014-11-17 5 views
71

Фон панели инструментов темного цвета, я хочу, чтобы текст и стрелка назад были белыми. Я пробовал следовать, но он не работает.Как установить текст на панели инструментов и задний цвет стрелки

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light.NoActionBar"> 

     <item name="colorPrimary">@color/blue</item> 
     <item name="colorPrimaryDark">@color/blue_darker</item> 
     <item name="colorAccent">@color/purple</item> 
     <!-- item name="android:textColorPrimary">@color/white</item--> // I don't want to set this, changes everywhere. 
     <item name="android:textColorSecondary">@color/white</item> 
     <item name="android:toolbarStyle">@style/AppTheme.ToolbarStyle</item> 
     <item name="toolbarStyle">@style/AppTheme.ToolbarStyle</item> 

     <item name="drawerArrowStyle">@style/AppTheme.DrawerArrowStyle</item> 

    </style> 

    <style name="AppTheme.ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar"> 
     <!--<item name="actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>--> 
     <item name="android:textColor">@color/white</item> // doesn't work 
     <item name="titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item> 
     <item name="android:titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item> 
     <item name="subtitleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle</item> 
    </style> 
+6

Попробуйте добавить 'приложение: тему = "@ стиль/ThemeOverlay.AppCompat.Dark.ActionBar"' к вашему ''; назад стрелка и текст будут белыми, как сказал @yubarajpoudel. – 1111161171159459134

ответ

103

Скорее всего, вы простираетесь от неправильного родителя. Если нет, вы можете попробовать добавить style в макет toolbar, если вы хотите переопределить настройки темы.

В макете панели инструментов:

<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="?attr/actionBarSize" 
     android:minHeight="?attr/actionBarSize" 
     app:theme="@style/ToolBarStyle" 
     app:popupTheme="@style/ToolBarPopupStyle" 
     android:background="@color/actionbar_color" /> 

В ваших стилях:

<!-- ToolBar --> 
    <style name="ToolBarStyle" parent="Theme.AppCompat"> 
     <item name="android:textColorPrimary">@android:color/white</item> 
     <item name="android:textColorSecondary">@android:color/white</item> 
     <item name="actionMenuTextColor">@android:color/white</item>  
     <item name="actionOverflowButtonStyle">@style/ActionButtonOverflowStyle</item> 
     <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> 
</style> 
+4

, давая ошибку при добавлении этого стиля в файл 'styles.xml' –

+1

вам не нужен элемент drawerArrowStyle, чтобы ответить на вопрос –

5
<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="?attr/actionBarSize" 
android:background="@color/actionBar" 
app:titleTextAppearance="@style/ToolbarTitleText" 
app:theme="@style/ToolBarStyle"> 

<TextView 
    android:id="@+id/title" 
    style="@style/ToolbarTitleText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="hh"/> 

<!-- ToolBar --> 
<style name="ToolBarStyle" parent="Widget.AppCompat.Toolbar"> 
    <item name="actionMenuTextColor">#ff63BBF7</item> 
</style> 

использование приложение: Тема = "@ стиль/ToolBarStyle"

Reference resources:http://blog.csdn.net/wyyl1/article/details/45972371

+1

. Пожалуйста, объясните свои ответы, только код публикации не очень понятен для ответа на вопрос. – SuperBiasedMan

0

Чтобы изменить значок обратно панели инструментов вытяжке вы можете использовать это:
Добавьте <item name="toolbarStyle">@style/ToolbarStyle</item> в вашу тему.
А вот ToolbarStyle сам:

<style name="ToolbarStyle" parent="Widget.AppCompat.Toolbar"> 
    <item name="navigationIcon">@drawable/ic_up_indicator</item> 
</style> 
84

Добавьте следующее в toolbar.xml

<?xml version="1.0" encoding="utf-8"?> 
<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_height="wrap_content" 
    android:layout_width="match_parent" 
    android:fitsSystemWindows="true" 
    android:minHeight="?attr/actionBarSize" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    android:background="?attr/colorPrimary"> 

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

Тогда в макете, где необходимое

<include layout="@layout/toolbar"/> 

Наслаждайтесь

+7

Да, работает! В частности, 'app: theme =" @ style/ThemeOverlay.AppCompat.Dark.ActionBar "'. – 1111161171159459134

+1

Должно быть '' –

1

Try много методов, в низкой версии API, fe asible метод <item name="actionMenuTextColor">@color/your_color</item> и не использовать андроид Namespace

пса:

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

    <!-- change the textColor --> 
    <item name="actionMenuTextColor">@color/actionMenuTextColor</item> 
</style> 
4
<android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimaryDark" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
</android.support.design.widget.AppBarLayout> 
1

я использовал заполнители так просто следовать, как вы можете по-прежнему держать наследство от оригинального стиля.

Перед

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolBar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    android:elevation="4dp" 
    android:theme="@style/{{originalBaseStyle}}" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

После:

styles.xml

<style name="{{yourToolbarStyle}}" parent="{{originalBaseStyle}}"> 
    <item name="android:textColorPrimary">@android:color/white</item> 
    <item name="android:textColorSecondary">@android:color/white</item> 
    <item name="actionMenuTextColor">@android:color/white</item> 
    <item name="actionOverflowButtonStyle">@style/ActionButtonOverflowStyle</item> 
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> 
</style> 

Поэтому

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolBar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    android:elevation="4dp" 
    android:theme="@style/{{yourToolbarStyle}}" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 
24

Внутри активность, вы можете использовать

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    toolbar.setTitleTextColor(getResources().getColor(R.color.white)); 

Если вы любите выбирать xml для цвета заголовка & назад стрелка белого просто добавьте этот стиль в style.xml.

<style name="ToolBarStyle" parent="Theme.AppCompat"> 
    <item name="android:textColorPrimary">@android:color/white</item> 
    <item name="android:textColorSecondary">@android:color/white</item> 
    <item name="actionMenuTextColor">@android:color/white</item> 
</style> 

и панель инструментов выглядеть:

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     app:theme="@style/ToolBarStyle" 
     android:layout_height="?attr/actionBarSize" 
    /> 
+0

этот рабочий ... – kelvincer

5

Я нашел гораздо проще исправить: просто добавить этот код на панель инструментов в XML

<Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?android:attr/actionBarSize" 
    android:background="?android:attr/colorPrimary" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    android:titleTextColor="#ffffffff" /> 
+1

Обратите внимание, что для этого требуется api> 23 –

+0

@VygintasB true –

0

Попробуйте это на файл XML

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     app:titleTextColor="@color/colorAccent" 
     app:theme="@style/ToolbarColoredBackArrow" 
     app:subtitleTextColor="@color/colorAccent" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

И добавьте это y наш файл colors.xml

<color name="colorAccent">YOUR_COLOR</color> 
+0

Пожалуйста, можете ли вы поделиться с нами тем, что было в приложении: theme = "@ стиль/ToolbarColoredBackArrow" – Simon

0

При использовании последней итерации Android Studio 3.0 и генерации классы активность в ваших стилей файлы изменить:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 

Для этого:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" /> 
0

Этот метод помог мне.

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
     <item name="colorPrimary">@color/primary</item> 
     <item name="colorPrimaryDark">@color/primaryDark</item> 
     <item name="colorAccent">@color/highlightRed</item> 
     <item name="actionBarTheme">@style/ToolbarStyle</item> 
</style> 

<style name="ToolbarStyle" parent="Widget.AppCompat.ActionBar"> 
     <item name="android:textColorPrimary">@color/white</item> 
</style> 
Смежные вопросы