0

Когда я впервые начал изучать этот вопрос, я нашел вопрос this, но ответ не сработал для меня. Я работаю по телефону KitKat, но из того, что я прочитал, это можно сделать на версиях с предварительным леденец, используя библиотеку AppCompat. Я использую this GitHub repo, и более конкретно this образец кода для создания экрана вложенных предпочтений.Tint CheckBox и панель инструментов с разными цветами в зависимости от предпочтений.

Вот мой AppTheme.SettingsTheme для SettingActivity в образце коды:

<style name="AppTheme.SettingsTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="titleTextStyle">@android:color/white</item> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="colorControlNormal">#fff</item> 
</style> 

Этой линия: <item name="colorControlNormal">#fff</item> изменяет Toolbar от наличия белого текста и черного назад стрелка, к тому, как текст и назад стрелка появляется белый (что хорошо).

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

enter image description here

enter image description here

Я попытался создать специальную тему только для панели инструментов (опять-таки из this ответа) и делает <item name="colorControlNormal">COLOR</item>, но его просто не влияет на панель инструментов.

Я также попытался подкрасить только CheckBoxPreference, но, похоже, что вовлекает в себя создание пользовательского макета для этого, и это приносит гораздо больше работы.

Вот мой макет панели инструментов, в настоящее время без какой-либо конкретной темы:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    tools:context=".ui.activities.settingsActivity.SettingsActivity"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="?colorPrimary" 
     android:minHeight="?actionBarSize" 
     app:navigationContentDescription="@string/abc_action_bar_up_description" 
     app:navigationIcon="?homeAsUpIndicator" 
     app:title="@string/activity_settings_title" 
     app:titleTextColor="@android:color/white" /> 
</android.support.design.widget.AppBarLayout> 

Может кто-нибудь объяснить, как подкрасить CheckBoxPreference и Toolbar seperatly? Мне все равно, какой из них я использую, используя ActivityTheme, и какой из них я накладываю на свой пользовательский номер theme. Ответы, которые я нашел, не сработали.

ответ

0

Используйте эту тему специально для своего Activity. Это то, для чего предназначены стили ThemeOverlay (при необходимости они используют атрибут colorControlNormal). Кроме того, можно определить отдельную «всплывающую» тему, если вы хотите легкие тематические всплывающие окна с вашего темным Toolbar:

<style name="SettingsTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

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

<style name="SettingsTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/> 

Затем вы можете применить эти стили в макете:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/SettingsTheme.AppBarOverlay" 
    tools:context=".ui.activities.settingsActivity.SettingsActivity"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?colorPrimary" 
     android:minHeight="?actionBarSize" 
     app:navigationContentDescription="@string/abc_action_bar_up_description" 
     app:navigationIcon="?homeAsUpIndicator" 
     app:title="@string/activity_settings_title" 
     app:popupTheme="@style/SettingsTheme.PopupOverlay" /> 

</android.support.design.widget.AppBarLayout> 
+0

спасибо за ваш ответ. можете ли вы привести пример того, как точно для темы только панель инструментов имеет белый цвет текста и обратной стрелки, а тема активности не затрагивается? Я попытался скопировать код, который вы предоставили, он сделал текст моей панели инструментов и обратную стрелку черным –

+0

@OfekAgmon Это код, который я использую в своей сборке. Стиль 'ThemeOverlay.AppCompat.Dark.ActionBar' должен сделать текст и значки белыми в' AppBarLayout' и 'Toolbar'. Вы уверены, что правильно применили тему? – Bryan

+0

Да, я скопировал именно так, как есть.если ThemeOverlay.AppCompat.Dark.ActionBar должен сделать панель инструментов и значки белыми, что такое ThemeOverlay.AppCompat.Light? во всяком случае, его все еще черный в моем приложении. –