当Itd返回false时,typedArray.hasValue()返回true

时间:2017-11-19 18:41:42

标签: android

在我从backgroundColor重新审核<item name="android:colorBackground">#ff00</item>属性styles.xml的测试中,我发现 如果未在styles.xml中设置该属性并且我使用typedArray.hasValue()检查属性,它仍将返回true,就像设置了一些值一样,因此我将永远不会获得默认值!

private void getBackgroundColor(){
    int[] colorAttrs = {android.R.attr.colorBackground, android.R.attr.strokeColor};
    TypedArray colors = context.obtainStyledAttributes(style, colorAttrs);

    if(colors.hasValue(0)){
        //it shouldn't come inside here because android.R.attr.colorBackground hasn't been set!
        //But it keeps retuning what looks like a white color.

        int backgroundColor = colors.getColor(0, ContextCompat.getColor(context, R.color.defaultBackgroundColor));
    }

    colors.recycle();
}

0 个答案:

没有答案