Добавление стиля кнопки в AppTheme не работает - PullRequest
1 голос
/ 23 апреля 2019

Я пытался добавить пользовательский стиль кнопок в мою AppTheme, и он не работает.Для справки, я добавил стиль Spinner в свою AppTheme, и он отлично работает.Итак, мне просто нужно выяснить, в чем проблема с моим стилем кнопок.

style.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:spinnerStyle">@style/mySpinnerStyle</item>
    <item name="android:buttonStyle">@style/myButtonStyle</item>
    <item name="buttonStyle">@style/myButtonStyle</item>
</style>

<style name="mySpinnerStyle" parent="@style/Widget.AppCompat.Spinner">
    <item name="overlapAnchor">true</item>
    <item name="android:background">@drawable/spinner_background</item>
    <item name="android:padding">5sp</item>
</style>

<style name="myButtonStyle" parent="@style/Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

Я могу добавить свой файл button_states.xml, если это необходимо, ноЗнайте, что стиль работает, если я вставляю свой стиль непосредственно в атрибут кнопки в моем макете, как показано ниже:

<Button
    android:id="@+id/button_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="4"
    style="@style/myButtonStyle"
    android:textSize="@dimen/text_size"
    android:text="OK" />

Объявление в родительском макете:

android:theme="@style/AppTheme"

Итак, почему он работаетпрямо в атрибуте кнопки, но не через мой AppTheme?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Спасибо Ахмаду Саттоуту за ответ.

В своем стиле кнопок я удалил @style из родительского элемента:

оригинал:

<style name="myButtonStyle" parent="@style/Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

изменено:

<style name="myButtonStyle" parent="Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

Если кто-нибудь сможет более подробно объяснить, почему это происходит, это будет с благодарностью.

0 голосов
/ 23 апреля 2019

1 - Создайте новый DRAWABLE RESOUCE FILE, щелкнув правой кнопкой мыши по файлу res / drawable в вашей андроид студии

2 - напишите в нем такой код: -

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners
android:radius="100dp"
        />
    <solid
        android:color="#FFFFFF"

        />
    <size
        android:width="100dp"
        android:height="100dp"
        />

</shape>

3 - откройте ваш XML-файл, содержащий эту кнопку, и измените фон кнопки на рисунок, который вы создали до

...