Как применить атрибуты colorControl * только к панели инструментов через стили / тему, не затрагивая остальные стили элементов - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь изменить цвет кнопок и их рябь на панелях инструментов, не влияя на остальную часть приложения, но независимо от того, сколько разных способов я пробую, что-то в стилях «ломается».

До сих пор у меня были лучшие результаты (так как в этом случае другие стили нарушаются меньше всего) путем установки colorControlNormal и colorControlHighlight в теме root моего приложения, однако любой другой значок, для которого ?colorControlNormal установлено для их оттенок также унаследует это изменение, а также любые ?selectableItemBackgroundBorderless и цвет полос прокрутки.

Предыдущие попытки, которые привели к худшим результатам (или вообще никаких результатов), учитываются при определении стиля панели инструментов через тему приложения:

<item name="toolbarStyle">@style/ToolbarStyle</item>

и в стиле панели инструментов, определяющем свойства colorControl *

<style name="ToolbarStyle" parent="Widget.AppCompat.Toolbar">
    <item name="colorControlNormal">@color/blue</item>
    <item name="colorControlHighlight">@color/blue</item>
</style>

, абсолютно безрезультатно

Другая попытка была сделана через атрибут темы непосредственно в представление панели инструментов:

<androidx.appcompat.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ToolbarStyle"/>

Имеет результат, который я хотел, но также менял намного больше, чем я хотел; высота заголовка + субтитров становится такой же, как и высота панели инструментов, поскольку android:minHeight больше не переопределяется, но если я переопределю это свойство в стилях, то представление поиска потеряет свое вертикальное выравнивание, кнопка «Назад» потеряет свою высоту, и т. д. c. Я попал в точку, в которой я не могу ничего исправить с помощью одной только темы / стиля.

Так что теперь я застрял в документации без подсказок о том, как я могу просто изменить цвета значков и их соответствующие колебания только цвета на панели инструментов, не влияя ни на что другое, кто-нибудь знает, как это сделать, не прибегая к этому программно?

...