其他分享
首页 > 其他分享> > android-如何检查属性是维度,整数还是资源ID

android-如何检查属性是维度,整数还是资源ID

作者:互联网

我试图创建一个相对简单的自定义视图,在该视图中,根据代码的位置,XML描述一个离散值(“ 100dp”)或资源值(“ @ dimen / standardWidth”).

我不确定如何检查返回的值是否为resid,整数或维值(因为getDimenion(),getInt()和getResourceID()都返回看起来相同的值).

我使用以下代码:

<declare-styleable name="LabeledView">
    ...
    <attr name="labelWidth" format="dimension|reference"/>
    ...
</declare-styleable>

在我的自定义视图中,我使用以下代码:

    if (attrs!=null) {
        TypedArray typedArray = getContext().obtainStyledAttributes(    
            attrs, R.styleable.LabeledView, 0, 0);

        int labelWidth = typedArray.getResourceId(R.styleable.LabeledView_labelWidth, -1);

在上面的示例中,labelWidth等于2131165193,因为它实际上是@dimen的残差.

解决方法:

仅使用尺寸格式,不提供参考.但是,您可以为属性使用参考值.应将其视为实际尺寸.

<attr name="labelWidth" format="dimension"/>

typedArray.getDimensionPixelSize

标签:android-custom-view,android
来源: https://codeday.me/bug/20191123/2066054.html