java.lang.IllegalArgumentException:使用静态颜色字符串时的未知颜色

时间:2018-09-20 14:01:30

标签: android android-drawable

创建此类后

public class MyColors {
public static String COLOR_APPLICATION = "#FF445FC7";
public static String COLOR_APPLICATION_OPACITY = "#cbb19155";
public static String PRIMARY_COLOR = "#211d1c";
public static String NAVBAR_COLOR = "#0c0c0c";
public static String BACKGROUND_COLOR = "#cbb19155";}

然后创建:

public class MyDrawables {

public static Drawable txt_shape = new DrawableBuilder()
        .rectangle().bottomLeftRadius(9).bottomRightRadius(9)
        .solidColor(Color.parseColor(MyColors.COLOR_APPLICATION))
        .build();

public static Drawable text_view_center_shape = new DrawableBuilder()
        .rectangle().solidColor(Color.parseColor("#009c3bbc"))
        .strokeColor(Color.parseColor("#9f9f9f")).strokeWidth(1)
        .build();}

在使用myDrawable时获取异常:

serviceTxt.setBackground(MyDrawables.txt_shape);

我该如何避免这种崩溃?

P.S:在活动中创建我的可绘制对象并使用它时,应用程序不会崩溃。

3 个答案:

答案 0 :(得分:1)

使用setBackgroundDrawable()代替setBackground() 如果要将颜色设置为背景,请使用setBackgroundColor()

答案 1 :(得分:0)

您可以使用静态方法,例如:

    public static Drawable txtShape (){
    return new DrawableBuilder()
    .rectangle().bottomLeftRadius(9).bottomRightRadius(9)
    .solidColor(Color.parseColor(MyColors.COLOR_APPLICATION))
    .build();}

或在 res 目录的 drawable 文件夹(例如 .xml 文件)中创建所需的所有形状,并引用R.drawable.text_shape等形状

最好将颜色存储在 res / values / colors.xml

答案 2 :(得分:0)

对此不太确定,但是请重新检查您的颜色字​​符串格式。 如果我没记错的话,颜色字符串是指颜色十六进制代码“ #xxxxxx”

public class MyColors {
public static String COLOR_APPLICATION = "#FF445FC7"; //<= recheck this
public static String COLOR_APPLICATION_OPACITY = "#cbb19155"; //<= recheck this
public static String PRIMARY_COLOR = "#211d1c"; //<= this is the right format
public static String NAVBAR_COLOR = "#0c0c0c";
public static String BACKGROUND_COLOR = "#cbb19155";} //<= recheck this