Как изменить цвет фона кнопки материала с помощью styles.xml

#android #material-design #android-button #material-components-android

Вопрос:

Я пытаюсь изменить цвет фона и цвет текста в стиле с помощью кнопок материала. Однако я не вижу никаких изменений в IDE, а также в телефоне. Вот скриншот проблемы.

введите описание изображения здесь

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

Вот мой XML:

         <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">


            <com.google.android.material.button.MaterialButton
                android:id="@ id/btn_login_skip"
                style="@style/myMaterialButton.Unboxed"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/cancel"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintRight_toLeftOf="@id/btn_login_login" />

            <com.google.android.material.button.MaterialButton
                android:id="@ id/btn_login_login"
                style="@style/myMaterialButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/pay_deail_submit_btn"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent" />
        </androidx.constraintlayout.widget.ConstraintLayout>

 

Вот некоторая информация о стиле:

 <style name="myMaterialButton" parent="Widget.MaterialComponents.Button.OutlinedButton">
        <item name="android:textColor">@color/colorPrimary</item>
        <item name="strokeWidth">2dp</item>
        <item name="android:background">@color/colorPrimaryDark</item>
</style>
 

Вот цвета:

 <color name="colorPrimary">@color/silver</color>
    <color name="colorPrimaryDark">#2A2E43</color>
 

Ответ №1:

По материалам Официального источника, которые вы должны использовать app:backgroundTint в своем стиле

тем временем для проверки «Виджет.Материальные компоненты.Кнопка.Стили» Кнопки » вы должны проверить кнопки на устройстве или эмуляторе, иногда кнопки с этим стилем хорошо отображаются в IDE

Ответ №2:

MaterialButton визуально отличается от Button и. AppCompatButton Одно из главных отличий заключается в том, что кнопка AppCompat имеет вставку 4dp с левой и правой сторон, в то время как кнопка Material этого не делает.

Вы можете использовать app:backgroundTint для изменения цвета

С помощью этого вам нужно использовать

 android:insetTop="0dp"
android:insetBottom="0dp"
 

Ответ №3:

Как описано в официальном документе, вы можете использовать backgroundTint атрибут:

 <style name="myMaterialButton" parent="Widget.MaterialComponents.Button.OutlinedButton">
    <!-- Background color --> 
    <item name="backgroundTint">@color/...</item>
</style>
 

Не используйте android:background атрибут для изменения цвета фона.