Java Android GradientDrawable setColor不工作
我有一个恼人的问题设置一个颜色的布局在安卓系统 这是layout.xml FrameLayout中我的元素在LinearLayout中的外观: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
<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>