2015-03-10 9 views
18

У меня есть панель инструментов, которую я использую, и установить титул:Изменить цвет названия на панели инструментов?

((ActionBarActivity)getActivity()).getSupportActionBar().setTitle("Home"); 

Есть ли способ изменить цвет от черного к белому?

Я попытался сделать свою собственную тему и установить его в XML, как это, но не кости:

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme2" parent="Theme.AppCompat"> 
     <item name="android:windowNoTitle">true</item> 
     <item name="windowActionBar">false</item> 
     <item name="colorPrimary">@color/primary</item> 
     <item name="colorPrimaryDark">@color/primary_dark</item> 
     <item name="colorAccent">@color/accent</item> 
     <item name="android:textColorPrimary">@color/primary_text</item> 
     <item name="android:textColorSecondary">@color/secondary_text</item> 

    </style> 

    <style name="Widget.MyApp.ActionBar" parent="Widget.AppCompat.ActionBar"> 
     <item name="android:background">@color/primary</item> 
     <item name="theme">@style/ThemeOverlay.MyApp.ActionBar</item> 
     <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> 
    </style> 

    <style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar"> 
     <item name="android:textColorPrimary">#FFFFFF</item> 
    </style> 



</resources> 

XML:

<?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="match_parent" 
    android:background="#e5e5e5" 
    android:orientation="vertical" > 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:minHeight="?attr/actionBarSize" 
     android:background="@color/primary" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     style="@style/Widget.MyApp.ActionBar"> 

     <Spinner 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/statsSpin" 
      android:spinnerMode="dropdown" 
      android:textColor="#FFFFFF"/> 


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



    <ListView 
     android:id="@+id/yourStats" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:dividerHeight="0px" 
     android:divider="@null" 

     > 
    </ListView> 



</LinearLayout> 
+0

Вы имеете в виду программно или через тему? – tachyonflux

+0

он повторил вопрос ответил на http://stackoverflow.com/a/2285722/2149195 – RBK

+0

@RaviKoradiya Этот ответ является устаревшим, FWIW, для старой версии Android. –

ответ

37

Programatically:

toolbar.setTitleTextColor(0xFFFFFFFF); 
+1

он будет поддерживать выше api 23 – Asthme

+4

Не, если вы используете библиотеку AppCompat. – zundi

+0

работал для меня: 'toolbar.setTitleTextColor (android.graphics.Color.WHITE);' .. спасибо! – gnB

19

согласно Theme vs Style blog post от создателя AppCompat и сообщения на version 21 of AppCompat, инструментальной панели DarkActionBar ар (т.е. Toolbar с темным фоном и светлым текстом), может быть достигнут путем добавления android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" вашего Toolbar «ы XML:

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:minHeight="?attr/actionBarSize" 
    android:background="@color/primary" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 

    <Spinner 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/statsSpin" 
     android:spinnerMode="dropdown"/> 


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

Это изменит цвет текста и цвет по умолчанию для многих атрибутов (например, ваш Spinner на светлый текст, необходимый для темного фона.

+0

Почему 'приложение: тема', а не' android: theme' (оба работают)? – Oleg

+3

До [AppCompat 22.1] (https://android-developers.googleblog.com/2015/04/android-support-library-221.html) вам пришлось использовать 'app: theme' - если вы используете позже, чем это (что вы должны на этом этапе), то да, вы должны использовать 'android: theme' всюду. Я обновил свой ответ, чтобы отразить лучшие практики сегодняшнего дня. – ianhanniballake

17

Создать новый стиль в приложения базовой темы

<style name="custom_toolbar" parent="@style/Widget.AppCompat.Toolbar"> 
     <item name="titleTextColor">#replace with color</item> 
    </style> 

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

<item name="toolbarStyle">@style/custom_toolbar</item> 
+0

Это работает для меня. и выглядит намного лучше. –

+1

Обратите внимание, что атрибут «toolbarStyle» только api 21+ – eugeneek

2

Если вы хотите изменить только цвет название текста, чем, Попробуйте это ..

getSupportActionBar().setTitle(Html.fromHtml("<font color='#746E66'>"+titleText+"</font>"));

это работает .. !!

0

Чтобы продлить на tachyonflux, чтобы установить цвет с HEX

toolbar.setTitleTextColor(Color.parseColor("#519c3f")); 
0

toolbar.setTitleTextColor (GetResources() GetColor (R.color.black).);

(панель инструментов - это имя, которое вы указали на свою панель инструментов в своем классе acitivyt) (В ваших цветах значения xml задают желаемые цвета и ссылаются на имя цвета, которое вы выбрали, как показано здесь. Я сохраняю некоторые из своих основных цвета нормальные имена) Потратил меня на то, чтобы понять это сам, но это единственный способ заставить его работать, ThemEditor должен это допускать, но это то, что есть.

0

В XML:

приложение: titleTextColor = «@ цвет/белый», как

<android.support.v7.widget.Toolbar 
    android:id="@+id/tb_top" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:minHeight="?attr/actionBarSize" 
    app:theme="@style/AppTheme.DarkToolbar" 
    app:titleTextColor="@color/White" /> 
8

Я знаю, что есть много ответов выше надежды, это поможет кому-то, кто не понимает выше ответы.

У Android есть вид под названием Панель инструментов. Этот вид имеет заголовок, который всегда берет как цвет по умолчанию из ресурсов color.xml, имя которого равно . Акцент. Вы можете изменить цвет панели инструментов двумя способами.

  1. Via XML, который я рекомендую вам сделать это, здесь ниже вы можете увидеть пример

    <android.support.v7.widget.Toolbar 
        android:id="@+id/toolbar" 
        android:layout_width="match_parent" 
        android:layout_height="?attr/actionBarSize" 
        app:titleTextColor="@color/White" />Here you can change it.Remember APP attribute not ANDROID 
    
  2. Via программно в деятельности или фрагмента.

    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); 
    toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.colorAccent)); 
    
+0

'app: titleTextColor' - очень приятное решение. спасибо – donfuxx

0

Используйте этот код

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

Он может быть изменен программно, как вы можете выше ответ. Но уменьшить сложность кода, вы должны изменить его с помощью style.xml Прежде всего создать attrs.xml в соответствии Рез/значения папку чем добавить два ссылка на attrs.xml папку как ниже

ATTRS. XML

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr name="toolbar_theme" format="reference" /> 
    <attr name="toolbar_theme_title" format="reference" /> 
</resources> 

После Defination референции, чем создать стиль в style.xml, как показано ниже

style.xml

<style name="CustomTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="colorPrimary">#00A4E4</item> 
     <item name="colorPrimaryDark">#AB0634</item> 
     <item name="colorAccent">#AB0634</item> 
     <item name="toolbar_theme">@style/CustomTheme.Toolbar</item> 
     <item name="toolbar_theme_title">@style/CustomTheme.Toolbar.Title</item> 
     <item name="android:textColorPrimary">@color/black</item> 
     <item name="android:textColorSecondary">@android:color/black</item> 
     <item name="windowActionModeOverlay">true</item> 
</style> 

<style name="CustomTheme.Toolbar" parent="ThemeOverlay.AppCompat.ActionBar"> 
    <!-- if you have a navigationdrawer you change it color also --> 
    <item name="colorControlNormal">#AB0634</item> 
</style> 

<style name="CustomTheme.Toolbar.Title" parent="TextAppearance.Widget.AppCompat.Toolbar.Title"> 
    <!-- Set title size --> 
    <item name="android:textSize">@dimen/abc_text_size_title_material_toolbar</item> 
    <!-- Set title color --> 
    <item name="android:textColor">#AB0634</item> 
</style> 

Теперь мы создали toolbar_theme и toolbar_theme_title ссылка в attrs.xml, чем дать эти ссылки на нашу собственную тему в style.xml

Наконец мы ссылаемся на такую ​​панель инструментов, как показано ниже

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

Thats it. Вы можете указать эту тему программно или установить в androidmanifest.xml, как показано ниже.

программного

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setTheme(R.style.CustomTheme); // (for Custom theme) 
    this.setContentView(R.layout.myactivity); 

AndroidManifest.xml

<application 
    android:theme="@style/CustomTheme"> 

или

<activity 
    android:theme="@style/CustomTheme"> 
0

Вы можете определить пользовательский инструмент стиля бара, расширив Widget.AppCompat.Toolba r и настройки свойств titleTextAppearance и subtitleTextAppearance. Таким образом, вы можете изменить цвет и размер текста заголовка и субтитров панели инструментов для справки http://www.zoftino.com/android-toolbar-tutorial.

<style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="toolbarStyle">@style/MyToolBarStyle</item> 
    </style> 
    <style name="MyToolBarStyle" parent="Widget.AppCompat.Toolbar"> 
     <item name="titleTextAppearance">@style/MyTitleTextAppearance</item> 
     <item name="subtitleTextAppearance">@style/MySubTitleTextAppearance</item> 
    </style> 
    <style name="MyTitleTextAppearance" parent="TextAppearance.Widget.AppCompat.Toolbar.Title"> 
     <item name="android:textSize">25dp</item> 
     <item name="android:textColor">#ff3d00</item> 
    </style> 
    <style name="MySubTitleTextAppearance" parent="TextAppearance.Widget.AppCompat.Toolbar.Subtitle"> 
     <item name="android:textSize">20dp</item> 
     <item name="android:textColor">#1976d2</item> 
    </style> 
0

Вы можете изменить тему своей панели действий, используя атрибут actionBarTheme, как показано ниже.Хотя он был добавлен в уровень API 21, он, похоже, совместим со старыми API.

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item> 
</style> 
Смежные вопросы