【问题标题】:How to set color in a custom view which do not have a function for this?如何在没有此功能的自定义视图中设置颜色?
【发布时间】:2019-03-11 06:49:12
【问题描述】:

我想在我的应用程序 android 中使用自定义复选框,而这个自定义复选框没有设置颜色的功能,在示例中,他们使用 (http://schemas.android.com/apk/res-auto) 像 (app) 一样在 xml 上设置颜色并以这种方式设置颜色:stroke_color="#2196F3" 我想知道如何以编程方式设置颜色,自定义复选框链接https://github.com/lguipeng/AnimCheckBox

【问题讨论】:

    标签: android colors android-view attr


    【解决方案1】:

    我看了看图书馆。对于stroke_color,他们没有setter。这里唯一的解决方法是使用Reflection 直接访问这个私有字段。 Reflection 在 Java 中几乎总是一个不好的做法。但是如果你真的想这样做,你可以这样做:

    AnimCheckBox checkbox = (AnimCheckBox)findViewById(R.id.checkbox);
    try{
      Field field = checkbox.getClass().getDeclaredField("mStrokeColor");
      field.setAccessible(true);
      field.setInt(checkbox,Color.parseColor("#2196F3"));
      checkbox.invalidate();
    }
    catch (NoSuchFieldException e){
      e.printStackTrace();
    }
    catch (IllegalAccessException e){
      e.printStackTrace();
    }
    

    你可以用同样的方法设置圆圈颜色。对于circleColor,字段名称为mCircleColor

    【讨论】:

    • 成功了,非常感谢,也感谢您的警告,这也不是一个好习惯,我会考虑您的评论,并尝试在未来找到另一种方法。 :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多