创建此类后
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:在活动中创建我的可绘制对象并使用它时,应用程序不会崩溃。
答案 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