【问题标题】:How to add the gradient color in color . Xml如何在 color 中添加渐变色。 xml
【发布时间】:2016-02-19 08:51:29
【问题描述】:

我正在使用库。在其中我展示了我的图书馆使用的活动,我正在使用一种颜色来用颜色覆盖屏幕。它看起来很酷。

但由于某些原因,我决定使用渐变。我已经开发出美丽的渐变效果,如下所示

<?xml version="1.0" encoding="UTF-8"?>

    <gradient
        android:angle="90"
        android:endColor="#555994"
        android:centerColor="#b5b6d2"

        android:startColor="#555994"
        android:type="linear" />

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

</shape>

看起来不错。但问题是我使用的库只接受颜色或颜色资源。我没有其他方法可以改变,图书馆正在展示它自己的活动,我只需要传递将出现在活动上的颜色。

现在我的问题是:

能否直接在color.xml文件中定义渐变色。或者是 有什么方法可以转换可绘制的渐变颜色文件 , 可以作为颜色选择。这样,图书馆就可以应用我的自定义 渐变色作为背景

请帮助我。这将是一个极大的帮助。

编辑 1:

对于那些说我将其添加为图像背景或其他任何东西的人,让我分享一下该行的一小部分,以便您更清楚地理解案例

.withColorResource(R.color.indigo)

这里我引用了 Color.xml 中定义的紫色,我可以将任何东西设置为背景,因为库只给了我设置颜色的选项,如上图所示。 所以我已经绘制了渐变颜色,现在我想知道如何将渐变引用为颜色。

【问题讨论】:

  • 关于您的“编辑 1”:我并不是说将其用作图像的背景 - 我只是说,将图像设置为 @android:color/transparent 并添加一个单独的视图,它接受背景渐变为可在下面绘制(!)它。 (所以梯度与那个库无关)
  • 我在哪里提到我想要图像背景的颜色。我只需要在 .withColorResource(R.color.indigo) 方法中推送颜色,我想给它一个渐变颜色
  • 您在第一句话中说得对:“我在其中显示图像,而在该图像后面我正在使用颜色”
  • ok,我是说图片后面不是图片背景,让我编辑一下
  • 啊哈。好的,那么很高兴知道您为该背景颜色使用的库。只是好奇你为什么需要它,(以及究竟是为了什么)。

标签: android android-xml android-color


【解决方案1】:

Android 中的颜色表示为 Int(我并不是说 R.color.whiteInt - 这只是颜色资源的 id),这只是普通十六进制颜色的数字表示,例如#f00 -> 0xFFFF0000。这意味着没有办法将渐变表示为单一颜色资源。

TLDR:渐变不是颜色,而是一组带角度的颜色。

【讨论】:

    【解决方案2】:

    按钮示例。 那是可绘制资源,my_button_gradient.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape xmlns:android="http://schemas.android.com/apk/res/android"
                android:shape="rectangle">
                <gradient
                    android:angle="180"
                    android:centerColor="@color/flat_silver_sand"
                    android:endColor="@color/flat_white_smoke"
                    android:startColor="@color/flat_white_smoke" />
            </shape>
        </item>
    </layer-list>
    

    如果你想使用选择器; btnselector.xml

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@color/transparent_black_10" android:state_focused="true" android:state_pressed="false" />
        <item android:drawable="@drawable/my_button_gradient" android:state_focused="true" android:state_pressed="true" />
        <item android:drawable="@drawable/my_button_gradient" android:state_focused="false" android:state_pressed="true" />
    </selector>
    

    layout.xml;

    ...

     <Button
     android:id="@+id/btn"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_alignParentEnd="true"
     android:layout_alignParentRight="true"
     android:layout_alignParentTop="true"    
     android:background="@drawable/btnselector" 
     android:textColor="#34495E"
                   />
    

    您可以为您的图像编写这样的代码。这也许对你有帮助。

    【讨论】:

    • 这不是我想要的
    【解决方案3】:

    您可以在 onCreate() 方法中使用 btnSubmit.setBackgroundResource(R.drawable.button_gradient)。

    【讨论】:

      【解决方案4】:

      但问题是我使用的库只接受颜色或 颜色资源。

      正如其他人所说,从您的渐变中创建一个资源,并在具有透明背景色的图像后面使用它。 使用 RelativeLayout 或 FrameLayout 堆叠视图。

      【讨论】:

      • 我没有使用图像或其他任何东西。我只需要给库方法颜色,我可以改变它
      • 什么库?听起来您使用库来加载图像并设置背景颜色。 (如果是,您可以使用透明背景加上具有默认视图的第二层)
      • 查看我编辑的答案,有一个线索。我必须在那个库的方法中给一个颜色,然后把颜色放在屏幕的背景上,所以我想设置渐变。我没有其他选择。所以告诉我如何加载drawable中的渐变文件,如何将drawable加载为颜色
      【解决方案5】:

      您只需要创建一个可绘制资源(参见下面的示例),并将其添加到您创建的布局中

      android:background="@drawable/grad"
      

      请检查gradient background答案以及similar gradient effect

      【讨论】:

      • 我只想要颜色资源我无法将drawable转换成color.xml
      猜你喜欢
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      相关资源
      最近更新 更多