默认情况下始终设置自定义样式的属性

惊人的

我已经定义了颜色的自定义样式属性。

<declare-styleable name="CustomView">
        <attr name="custom1" format="boolean" />
        <attr name="custom2" format="reference|color" />
</declare-styleable>

通过getStyleStyledAttributes获取xml中定义的属性时,即使xml中未定义任何属性,它也始终返回size为1。

TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.CustomView, 0, 0);
final int size = attributes.getIndexCount();

for(int i = 0; i < size; i++) {
    final int attr = attributes.getIndex(i);
    if (attr == R.styleable.CustomView_custom1) {
        boolean b = attributes.getBoolean(attr, false);
     }
    else if (attr == R.styleable.CustomView_custom2) {
        ColorStateList cs = attributes.getColorStateList(attr);
        int color = cs.getDefaultColor();
    }
}

即使在xml中未定义任何属性,此处的大小也始终为1。由于该颜色会获得一些随机值,因此不确定从何处获取一些值?

输出如下:

Test﹕ ----
Test﹕ CustomView= 2130772048
Test﹕ CustomView= 2130772049
Test﹕ ----
Test﹕ AttributeSet= 16842901 textSize
Test﹕ AttributeSet= 16842904 textColor
Test﹕ AttributeSet= 16842927 gravity
Test﹕ AttributeSet= 16842960 id
Test﹕ AttributeSet= 16842966 paddingLeft
Test﹕ AttributeSet= 16842968 paddingRight
Test﹕ AttributeSet= 16842996 layout_width
Test﹕ AttributeSet= 16842997 layout_height
Test﹕ AttributeSet= 16843000 layout_marginTop
Test﹕ AttributeSet= 16843101 singleLine
Test﹕ AttributeSet= 16843119 drawableLeft
Test﹕ AttributeSet= 16843121 drawablePadding
Test﹕ AttributeSet= 16843139 layout_toRightOf
Test﹕ AttributeSet= 2130772048 custom1
鲍勃·斯奈德

奇怪的问题。我只能建议您添加调试日志输出并尝试更改,以获取更多有关发生的情况的信息。

这些语句AttributeSet在布局XML中转储您的自定义视图的属性ID和自定义视图的实例的ID

Log.i("Test", "----");
for (int id : R.styleable.CustomView) {
    Log.i("Test", "CustomView= " + id);
}

Log.i("Test", "----");
int n = attrs.getAttributeCount();
for (int i = 0; i < n; i++) {
    Log.i("Test", "AttributeSet= " + attrs.getAttributeNameResource(i) + " " + attrs.getAttributeName(i));
}

要查看是否custom2在主题中设置属性,请执行以下操作:

TypedValue val = new TypedValue();
boolean resolved = context.getTheme().resolveAttribute(R.attr.custom2, val, true);
if (resolved) {
    Log.i("Test", "Custom2 in theme");
} else {
    Log.i("Test", "Custom2 NOT in theme");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS8自定义键盘在不请求开放访问的情况下访问用户默认设置

来自分类Dev

选择自定义属性以设置样式

来自分类Dev

在架构默认情况下使用自定义功能吗?

来自分类Dev

选择行时启用自定义按钮(默认情况下禁用)

来自分类Dev

默认情况下未选择自定义分类模板

来自分类Dev

定义自定义Attribute类以使属性在某些情况下可浏览

来自分类Dev

是否可以在不使用自定义集合访问器的情况下监视属性的更改?

来自分类Dev

在样式设置器中设置自定义附加属性

来自分类Dev

Android-在没有默认通知的情况下显示自定义通知-Parse.com

来自分类Dev

EXT-JS 4.1:在没有默认菜单的情况下向网格列标题添加自定义菜单

来自分类Dev

Android-在没有默认通知的情况下显示自定义通知-Parse.com

来自分类Dev

WPF根据自定义属性的值设置CustomControl样式

来自分类Dev

在片段中每个列表视图有多个文本视图的情况下,如何设置自定义适配器

来自分类Dev

如何在没有jquery的情况下使用title属性创建自定义工具提示

来自分类Dev

设置自定义样式后默认样式丢失(例如颜色)

来自分类Dev

为什么Compass / Scss设置列表样式:默认情况下没有?

来自分类Dev

设置自定义属性

来自分类Dev

如何在没有jshint警告的情况下以角度定义自定义包?

来自分类Dev

默认情况下,Mandrill中的新API密钥对您的帐户具有完全访问权限-您可以自定义吗?

来自分类Dev

为什么默认情况下,EffectsComposer会无意中使自定义着色器材质变亮?

来自分类Dev

使nano默认情况下始终以sudo运行

来自分类Dev

使nano默认情况下始终以sudo运行

来自分类Dev

默认情况下在推土机中调用自定义转换器

来自分类Dev

默认情况下有什么方法可以公开自定义执行器端点

来自分类Dev

默认情况下在推土机中调用自定义转换器

来自分类Dev

为自定义控件设置样式

来自分类Dev

UIFont自定义样式设置

来自分类Dev

设置自定义按钮的样式

来自分类Dev

为自定义控件设置样式

Related 相关文章

  1. 1

    iOS8自定义键盘在不请求开放访问的情况下访问用户默认设置

  2. 2

    选择自定义属性以设置样式

  3. 3

    在架构默认情况下使用自定义功能吗?

  4. 4

    选择行时启用自定义按钮(默认情况下禁用)

  5. 5

    默认情况下未选择自定义分类模板

  6. 6

    定义自定义Attribute类以使属性在某些情况下可浏览

  7. 7

    是否可以在不使用自定义集合访问器的情况下监视属性的更改?

  8. 8

    在样式设置器中设置自定义附加属性

  9. 9

    Android-在没有默认通知的情况下显示自定义通知-Parse.com

  10. 10

    EXT-JS 4.1:在没有默认菜单的情况下向网格列标题添加自定义菜单

  11. 11

    Android-在没有默认通知的情况下显示自定义通知-Parse.com

  12. 12

    WPF根据自定义属性的值设置CustomControl样式

  13. 13

    在片段中每个列表视图有多个文本视图的情况下,如何设置自定义适配器

  14. 14

    如何在没有jquery的情况下使用title属性创建自定义工具提示

  15. 15

    设置自定义样式后默认样式丢失(例如颜色)

  16. 16

    为什么Compass / Scss设置列表样式:默认情况下没有?

  17. 17

    设置自定义属性

  18. 18

    如何在没有jshint警告的情况下以角度定义自定义包?

  19. 19

    默认情况下,Mandrill中的新API密钥对您的帐户具有完全访问权限-您可以自定义吗?

  20. 20

    为什么默认情况下,EffectsComposer会无意中使自定义着色器材质变亮?

  21. 21

    使nano默认情况下始终以sudo运行

  22. 22

    使nano默认情况下始终以sudo运行

  23. 23

    默认情况下在推土机中调用自定义转换器

  24. 24

    默认情况下有什么方法可以公开自定义执行器端点

  25. 25

    默认情况下在推土机中调用自定义转换器

  26. 26

    为自定义控件设置样式

  27. 27

    UIFont自定义样式设置

  28. 28

    设置自定义按钮的样式

  29. 29

    为自定义控件设置样式

热门标签

归档