Создать стиль, который выходит за рамки стиля по умолчанию в теме приложения - PullRequest
0 голосов
/ 29 мая 2019

Я установил стиль кнопки по умолчанию в своей теме приложения, чтобы он применялся к каждой кнопке в приложении.
Есть несколько кнопок, которые должны иметь заглавные буквы в дополнение к стилю по умолчанию. Так что я пытаюсь сделать что-то вроде этого
(следующий фрагмент кода не работает, так как я не могу установить parent="?attr/materialButtonStyle"):

<style name="capitalizedButton" parent="?attr/materialButtonStyle">
    <item name="android:textAllCaps">true</item>
</style>

Можно ли расширить стиль, определенный в theme.xml? Я не хочу ссылаться на локальный стиль, который я устанавливаю в теме, поскольку он может измениться позже, вместо этого я намереваюсь получить к нему доступ с помощью атрибута темы.

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Если использование заглавной буквы происходит в дополнение к вашему пользовательскому стилю кнопок по умолчанию, нет необходимости делать стиль заглавными буквами дочерним по отношению к ?attr/materialButtonStyle (Это невозможно сделать в любом случае, поскольку ?attr ссылается на атрибут в текущей применяемой теме).Подробнее об этом можно прочитать здесь .

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="buttonStyle">@style/DefaultButton</item>
</style>

<style name="DefaultButton" parent="Widget.AppCompat.Button">
    <item name="android:textColor">@color/white</item>
</style>

<style name="AllCapsButton">
    <item name="android:textAllCaps">true</item>
</style>

layout.xml

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:theme="@style/AllCapsButton"/>

В приведенном выше коде button получает стиль DefaultButton (белый текст), применяемый к теме, и стиль AllCapsButton (заглавные буквы), применяемый в файле макета.

0 голосов
/ 29 мая 2019

Вы можете напрямую передать стиль в Button виджет в вашем XML, например:

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="capitalizedButton"/>

Надеюсь, вы получите ответ. Если нет, пожалуйста, объясните свой вопрос.

...