Android Studio中按钮未应用渐变颜色

3
我在drawable文件夹中创建了一个gradient_file.xml。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="20dp" />

    <gradient
        android:startColor="@color/white"
        android:endColor="@color/black"
        android:angle="45"
        android:type="linear" />
</shape>

我已经将它应用到我的布局中的按钮上了。
<Button
    android:id="@+id/button2"
    android:layout_width="0dp"
    android:layout_height="100dp"
    android:background="@drawable/gradient_file"
    android:text="Button"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.243" />

我得到的结果是:

enter image description here

颜色应该是不同的。我已经重建了项目,但在预览或模拟器中颜色没有改变。

这个回答解决了你的问题吗?如何通过XML在Android中为按钮添加渐变? - Vatsal kesarwani
不,正如您所看到的,我已经在做您的解决方案所做的事情,但我没有得到任何结果。按钮的颜色没有改变。 - M.Ahmed
请分享项目中使用的样式和主题。 - Vatsal kesarwani
4个回答

5
在themes.xml中,修改以下内容:
<style name="Theme.YourApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar">

to

<style name="Theme.YourApp" parent="Theme.AppCompat.DayNight.DarkActionBar">

那么提交的可绘制对象就会起作用!

1
这是AppCompat,而不是AppCompact。(已为您修正) - Ryan M

4

它正在被themes.xml文件中的颜色覆盖。前往您的themes.xml文件(位于res/values/themes)并替换。

 <item name="colorPrimary">@color/purple_500</item>

使用

<item name="colorPrimary">@null</item>

查看您的渐变效果。

编辑:我不确定这是为什么……可能是在较新版本的Android Studio中存在的错误?但是,我通过此解决方案成功使您的按钮渐变效果工作。


谢谢,它起作用了。是的,你是对的。我的颜色方案应该覆盖默认提供的方案。 - M.Ahmed
您能告诉我另一种方法,不需要更改我的主题并使其正常工作吗? - M.Ahmed
因为使用主色调的视图将失去该颜色,所以还有其他方法吗? - M.Ahmed
@M.Ahmed - 我希望我知道。就像我提到的那样,我不确定为什么会出现这种情况,而且据我所知似乎是在较新版本的Android Studio中出现的问题。 - Tommy Bailey

3

我在按钮属性中解决了这个问题,方法如下:

app:backgroundTint="@null"

0
我也通过以下方式解决了这个问题。 进入themes.xml文件, 将color primary更改为@null。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接