Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android GradientDrawable setColor不工作_Java_Android_Swing_Colors - Fatal编程技术网

Java Android GradientDrawable setColor不工作

Java Android GradientDrawable setColor不工作,java,android,swing,colors,Java,Android,Swing,Colors,我有一个恼人的问题设置一个颜色的布局在安卓系统 这是layout.xml FrameLayout中我的元素在LinearLayout中的外观: <LinearLayout android:id="@+id/farPD_mid_linearLayout" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_par

我有一个恼人的问题设置一个颜色的布局在安卓系统

这是layout.xml FrameLayout中我的元素在LinearLayout中的外观:

 <LinearLayout
    android:id="@+id/farPD_mid_linearLayout"
    android:orientation="vertical"
    android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent">

        <!--  top margin layout-->
        <FrameLayout
          android:id="@+id/farPD_top_margin"
          android:layout_width="match_parent"
          android:layout_height="0dp"
          android:layout_weight="1"
          android:background="@android:color/white">
        </FrameLayout>
我也试过使用SetColor。阿尔法是255。问题是它没有画成白色!它以某种灰色绘制:|*,也不是布局中设置的颜色。另外,如果我对Java代码进行注释,并且只在布局中设置颜色(也是白色),我会得到相同的输出:用灰色绘制的FrameLayout


有人能帮我吗?谢谢大家!

您还可以使用xml设置渐变背景

gradient_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <gradient
                android:startColor="@color/selected_blue_color"
                android:endColor="@color/default_blue_color"
                android:angle="270" />
        </shape>
    </item>
</selector>
layout.xml

LinearLayout
    android:id="@+id/farPD_mid_linearLayout"
    android:orientation="vertical"
    android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent">

        <!--  top margin layout-->
        <FrameLayout
          android:id="@+id/farPD_top_margin"
          android:layout_width="match_parent"
          android:layout_height="0dp"
          android:layout_weight="1"
          android:background="@drawable/gradient_bg">
        </FrameLayout>
</LinearLayout>

虽然与这个问题没有100%的关联,但我想我会把我的发现发布给那些仍在苦苦挣扎的人。我只是对GradientDrawable的setColor函数有一个问题,我偶然发现了这个问题,希望能找到帮助。正如你所说,它不会采用我给它的颜色,而是会选择中间色。在我的场景中,我在RecyclerView中有一个卡片列表,我为每个卡片的背景指定了不同的渐变颜色。但似乎总是因为某种原因,一张牌的颜色会传播到另一张牌上

解决方案
在与它斗争了一段时间之后,我结束了对GradientDrawable的研究,我可能应该首先做这项工作,并发现在对它进行任何更改之前,您可能需要调用GradientDrawable的任何实例。这是因为,除非您指定实例是可变的,否则它可能会链接到其他现有的GradientDrawable实例,对其中一个实例所做的更改可能会传播到其他实例。

您想做什么?具体点我想设置布局元素的背景色。在我的例子中,我想将白色设置为FrameLayout的背景。FrameLayout位于线性布局中,如上所示。调用Java代码后,FrameLayout将绘制为灰色,而不是白色。如何才能更具体?只需尝试将白色图像设置为框架布局的背景
LinearLayout
    android:id="@+id/farPD_mid_linearLayout"
    android:orientation="vertical"
    android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent">

        <!--  top margin layout-->
        <FrameLayout
          android:id="@+id/farPD_top_margin"
          android:layout_width="match_parent"
          android:layout_height="0dp"
          android:layout_weight="1"
          android:background="@drawable/gradient_bg">
        </FrameLayout>
</LinearLayout>