android – GradientDrawable的setColor方法绘制不同的颜色

android – GradientDrawable的setColor方法绘制不同的颜色,第1张

概述我在图层列表中有一个形状,我的目标是在运行时以编程方式更改形状的颜色.我有HEX代码的字符串,我使用Color.parseColor()来解析它,我传递给setColor方法.每当我运行应用程序时,它会显示不同的颜色,我希望. 这是我的XML文件代码: <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 我在图层列表中有一个形状,我的目标是在运行时以编程方式更改形状的颜色.我有HEX代码的字符串,我使用color.parsecolor()来解析它,我传递给setcolor方法.每当我运行应用程序时,它会显示不同的颜色,我希望.

这是我的XML文件代码:

<@R_566_3419@ xmlns:androID="http://schemas.androID.com/apk/res/androID" ><item     androID:ID="@+ID/lvbg"    androID:top="1dp">    <shape        androID:ID="@+ID/ListvIEw_background"        androID:shape="rectangle" >        <size            androID:height="220dp"            androID:wIDth="600dp" >        </size>        <solID androID:color="@androID:color/black"></solID>        <corners androID:radius="15dp" />    </shape></item></@R_566_3419@>

这是我在CustomAdapter中的代码:

convertVIEw = mInflater.inflate(R.layout.student_info_selection_fragment_icon,null);holder = new VIEwHolder();holder.collegeBG=(LayerDrawable)convertVIEw.getResources().getDrawable(R.drawable.rectangle);holder.bg = (GradIEntDrawable)holder.collegeBG.findDrawableByLayerID(R.ID.lvbg);String color = "#FF" + rowItem.getCollegecolor();holder.bg.setcolor(color.parsecolor(color));

例如,当我放#FF1D0A63时,我会变成黑色或棕色,颜色完全不同.
谢谢

解决方法 我仍然不知道问题是什么,但我意识到当我在xml中使用@R_566_3419@并将其作为背景分配给视图时,并尝试在@R_566_3419@中更改形状的颜色我遇到了这个问题.

所以我解决了将背景形状与图层列表分开的问题.

我将背景形状放到另一个文件中:

<?xml version="1.0" enCoding="utf-8"?><shape xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:ID="@+ID/ListvIEw_background"    androID:shape="rectangle" >    <size        androID:height="220dp"        androID:wIDth="600dp" >    </size>    <solID androID:color="@androID:color/black" > </solID>    <corners androID:radius="15dp" /></shape>

我将其指定为TextVIEw的背景.

我使用图层列表的原因是组合2-3个形状并使它们渐变并给它们圆角.相反,我使用了VIEw和TextVIEw并将形状分配给它们作为背景并且它起作用.

这是我的新CustomAdapter:

convertVIEw = mInflater.inflate(R.layout.student_info_selection_fragment_icon,null);holder = new VIEwHolder();holder.tvBackground = (TextVIEw) convertVIEw.findVIEwByID(R.ID.tvSelectionCollegeBackground);GradIEntDrawable background = (GradIEntDrawable) holder.tvBackground.getBackground();String color = "#FF" + rowItem.getCollegecolor();background.setcolor(color.parsecolor(color));holder.tvBackground.setBackground(background);
总结

以上是内存溢出为你收集整理的android – GradientDrawable的setColor方法绘制不同的颜色全部内容,希望文章能够帮你解决android – GradientDrawable的setColor方法绘制不同的颜色所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1128896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存