Тема кнопки Android не применяется - PullRequest
0 голосов
/ 11 марта 2019

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

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="buttonStyle">@style/ButtonStyle</item>
    <item name="android:buttonStyle">@style/ButtonStyle</item>
    <item name="android:button">@style/ButtonStyle</item>
</style>
<style name="ButtonStyle" >
        <item name="android:textSize">20dp</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_width">150dp</item>
        <item name="android:layout_gravity">center</item>
        <item name="android:layout_marginTop">10dp</item>
        <item name="android:background">@drawable/defaultbutton</item>
</style>

Итак, я ожидаю, что все кнопки в моем приложении будут стилизованы под эти настройки. Единственный способ сделать это - импортировать стиль внутри моей кнопки, используя

style="@style/ButtonStyle"

Кнопка «Начать тест» оформляется через внутренний импорт.

Забавно, что некоторые стили импортированы для кнопок «Настройки» и «Проверить датчики» (например, drawable / deefaultbutton или центрированный текст)

<Button
    style="@style/ButtonStyle"
    android:id="@+id/test"
    android:layout_height="50dp"
    android:text="Start Test" />

<Button

    android:id="@+id/settings"
    android:layout_width="150dp"
    android:layout_height="50dp"
    android:text="Settings" />

<Button
    android:id="@+id/checkSensors"
    android:layout_width="150dp"
    android:layout_height="50dp"
    android:text="Check Sensors" />

Мой вопрос: почему это происходит, и я не могу установить его по умолчанию, не импортировав его через «Theme»?

Пробовал это и читал это , но у меня это не работает.

1 Ответ

0 голосов
/ 11 марта 2019

Пользовательский стиль должен расширять Widget стили для использования с атрибутом buttonStyle.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="buttonStyle">@style/Widget.AppCompat.Button.ButtonStyle</item>
</style>
<style name="Widget.AppCompat.Button.ButtonStyle">
        <item name="android:textSize">20dp</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_width">150dp</item>
        <item name="android:layout_gravity">center</item>
        <item name="android:layout_marginTop">10dp</item>
        <item name="android:background">@drawable/defaultbutton</item>
</style>
...