gpt4 book ai didi

android - java.lang.ClassCastException : android. graphics.drawable.LayerDrawable 无法转换为 android.graphics.drawable.GradientDrawable

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:27 26 4
gpt4 key购买 nike

在我的应用程序中,我正在尝试更改每个 listView 项目的背景颜色。为此,我使用图层列表中的形状。这是我的代码

drop_shadow.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item>
<shape android:shape="rectangle">

<gradient android:startColor="#B7B7B7"
android:endColor="#A1A1A1"
android:angle="270"/>
<corners android:radius="10dp" />

</shape>
</item>

<item android:top="1px">

<shape android:shape="rectangle">

<solid android:color="@color/color11"/>
<corners android:radius="10dp" />
</shape>

</item>

</layer-list>

主.xml

<RelativeLayout 
android:orientation="vertical"
android:id="@+id/mainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/drop_shadow"/>

当我调用这个方法时我有 ClassCastException

 private void setRoundedBackground(View view,int color){
GradientDrawable gradientDrawable;
gradientDrawable = (GradientDrawable) view.getBackground().mutate();
gradientDrawable.setColor(getResources().getColor(color));
gradientDrawable.invalidateSelf();

}

如何从 LayerDrawable 获取 GradientDrawable?

最佳答案

你可以动态创建渐变drawable..使用下面的类

    import android.graphics.drawable.GradientDrawable;

public class SomeDrawable extends GradientDrawable {

public SomeDrawable(int pStartColor, int pCenterColor, int pEndColor, int pStrokeWidth, int pStrokeColor, float cornerRadius) {
super(Orientation.BOTTOM_TOP,new int[]{pStartColor,pCenterColor,pEndColor});
setStroke(pStrokeWidth,pStrokeColor);
setShape(GradientDrawable.RECTANGLE);
setCornerRadius(cornerRadius);
}
}

并如下使用这个类

SomeDrawable drawable = new SomeDrawable(Color.parseColor("Start Color Code"),Color.parseColor("Center Color Code"),Color.parseColor("End Color Code"),1,Color.BLACK,00);
yourLayout.setBackgroundDrawable(drawable);

关于android - java.lang.ClassCastException : android. graphics.drawable.LayerDrawable 无法转换为 android.graphics.drawable.GradientDrawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18055492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com