Как установить градиентный фон для кнопки материала? - PullRequest
0 голосов
/ 17 сентября 2018

Я сейчас использую этот код, но фон не меняется. Он по-прежнему показывает акцент в качестве фона.

<com.google.android.material.button.MaterialButton
    android:id="@+id/materialButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello"
    app:cornerRadius="32dp"
    android:background="@drawable/gradiant_blue"/>

gradiant_blue.xml

<shape
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">

   <gradient
       android:angle="-45"
       android:startColor="#2979FF"
       android:endColor="#7C4DFF"/>
</shape>

Я сейчас использую

Версия компонентов материала: 1.0.0-rc02

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

LE: С моей точки зрения, я предлагаю вам использовать Button или AppCompatButton.

Попробуйте это:

gradient.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="0"
        android:endColor="#027FEE"
        android:startColor="#2CC6F2" />
</shape>

button.xml

<!-- replace MaterialButton with Button or AppCompatButton -->
<com.google.android.material.button.MaterialButton
    android:id="@+id/materialButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/gradient"
    android:text="Hello" />

Результат:

result

С corner radius изменить градиент.xml на:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="0"
        android:endColor="#027FEE"
        android:startColor="#2CC6F2" />
    <corners android:radius="32dp"/>
</shape>

Результат:

result

0 голосов
/ 20 декабря 2018

Чтобы установить фон, вам нужно расширить базовую тему

Theme.AppCompat.Light.NoActionBar

, а не

Theme.MaterialComponents.Light.NoActionBar

0 голосов
/ 17 сентября 2018

Пожалуйста, прочитайте документацию для кнопки Материал, с здесь

Там сказано: «Для закрашенных кнопок colorPrimary вашей темы предоставляет цвет фона по умолчанию для компонента, а цвет текста colorOnPrimary. Для незаполненных кнопок colorPrimary вашей темы предоставляет цвет текста по умолчанию для компонента, а цвет фона по умолчанию прозрачный».

Я думаю, что по этой причине вы видите какой-то другой цвет (accent-color), пожалуйста, проверьте атрибуты, которые задают цвет фона.

Упомянуты следующие атрибуты:

app:backgroundTint

app:backgroundTintMode

...