изменить цвет фона на кнопках Android - PullRequest
0 голосов
/ 08 января 2019

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

В моем файле styles.xml я поместил это:

<style name="AppTheme.Button" parent="Widget.AppCompat.Button.Borderless.Colored">
<item name="android:colorButtonNormal">@color/colorButtonDark</item>
<item name="android:textColor">@color/colorAccent</item>
</style>

Мои цвета такие:

<resources>
[...]
<color name="colorAccent">#ffffff</color>
<color name="colorButtonDark">#300a03</color>
</resources>

И один пример кнопки выглядит так:

<Button
        android:text="exampleButton"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:id="@+id/button7" android:layout_marginTop="8dp"
        app:layout_constraintTop_toTopOf="@+id/guideline19" android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent" 
        app:layout_constraintStart_toStartOf="@+id/guideline"
        android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginEnd="8dp" android:theme="@style/AppTheme.Button"/>

Ответы [ 2 ]

0 голосов
/ 08 января 2019

вместо

android:theme="@style/AppTheme.Button"

использование

android:style="@style/AppTheme.Button".

EDIT1:

Тема против стиля

Так в чем же разница? Ну они оба объявлено точно так же (что вы уже знаете), Разница заключается в том, как они используются.

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

Стили предназначены для применения на уровне представления. Внутренне, когда ты установить стиль в представлении, LayoutInflater будет читать стиль и применять это к AttributeSet перед любыми явными атрибутами (это позволяет вам переопределить значения стиля в представлении).

Значения в наборе атрибутов могут ссылаться на значения из темы представления.

TL; DR: темы глобальные, стили локальные.

https://chris.banes.me/2014/11/12/theme-vs-style/

0 голосов
/ 08 января 2019

Попробуйте использовать android.support.v7.widget.AppCompatButton вместо Button в xml.

<android.support.v7.widget.AppCompatButton
    android:text="exampleButton"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:id="@+id/button7" android:layout_marginTop="8dp"
    app:layout_constraintTop_toTopOf="@+id/guideline19" 
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintStart_toStartOf="@+id/guideline"
    android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
    android:layout_marginEnd="8dp" android:theme="@style/AppTheme.Button"/>
...