【问题标题】:Gradient Button displaying default purple color渐变按钮显示默认紫色
【发布时间】:2021-01-08 19:27:16
【问题描述】:

我正在尝试在按钮上创建渐变背景,但是当我按照之前提出的问题的答案执行此操作时,我得到的只是默认的紫色。

layout.xml

<Button
        android:id="@+id/instagram_button"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:background="@drawable/gradient_shape"
        android:text="Open Instagram Profile"
        ></Button>

渐变形状.xml

android:shape="rectangle">
<gradient
    android:angle="270"
    android:centerColor="#F82634"
    android:endColor="#FA3B6F"
    android:startColor="#FA7D6F" />

<padding
    android:bottom="7dp"
    android:left="7dp"
    android:right="7dp"
    android:top="7dp" />

<corners android:radius="60dp" />

Button background I am getting

【问题讨论】:

  • 尝试 app:background:"color" 作为 Button 的属性。
  • @CSmith 我不确定这里使用的格式,只是给它一个通用名称。
  • @DavidKroukamp 感谢您的链接。我在背景色中添加了 null 无济于事。

标签: android android-studio


【解决方案1】:

创建新的Drawable Resource,编写如下代码:

渐变背景:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape>
        <corners android:radius="60dp"/>
        <gradient android:startColor="#fa7d6f"
            android:centerColor="#f82634"
            android:endColor="#fa3b6f"
            android:angle="180"/>
    </shape>
  </item>
</selector>

布局:

 <Button
     android:layout_width="250dp"
     android:layout_height="60dp"
     android:text="test button"
     android:textColor="@color/white"
     android:textStyle="bold"
     android:textSize="25sp"
     android:background="@drawable/gradient_background"/>

【讨论】:

  • 这对我不起作用。似乎它适用于其他所有人,所以我不确定我为什么会遇到这个问题。我正在使用滚动活动,所以我不会认为这会阻止它工作,但也许?
  • 在活动中的单个按钮或文本视图上测试它,并在其他模拟器或具有更高 api 的移动设备上测试
  • 您使用哪个 api 进行测试??
  • 我一直在像素 3a 上测试它。我考虑过在一个新项目上对其进行测试,但认为如果它仍然不适用于我的项目,那么测试它是否适用于其他东西并没有多大意义。我不喜欢这种逻辑,所以我可能会在有机会时对其进行测试。
  • 它应该可以正常工作,但我不知道你的问题是什么。你在真实的手机上测试吗??
【解决方案2】:

|最终更新|:将按钮更改为 ImageButton 并将 srcCompat 设置为我想要的可绘制对象,此方法有效!为了让我的按钮相互重叠,我使用了一个框架布局来封装它们,如下所示。

 <FrameLayout
    android:layout_width="380dp"
    android:layout_height="50dp"
    android:layout_gravity="center">
        <ImageButton
            android:id="@+id/image_button"
            android:text="Open Instagram Profile"
            android:layout_width="380dp"
            android:layout_height="50dp"
            android:layout_gravity="center"
            android:backgroundTint="@null"
            android:background="@null"
            app:srcCompat="@drawable/custom_button" />

    <Button
        android:id="@+id/instagram_button"
        android:layout_width="380dp"
        android:layout_height="50dp"
        android:layout_gravity="center"
        android:background="@null"
        android:backgroundTint="@null"
        android:text="Open Instagram Profile"
        android:alpha="0"
        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Open Instagram Profile"
        android:gravity="center"
        android:textSize="20dp"
        android:textColor="@color/white"
        ></TextView>
</FrameLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2011-11-17
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多