3

我正在尝试制作一个相对简单的自定义视图,根据代码的位置,XML 描述离散值 ( "100dp") 或资源值 ( "@dimen/standardWidth")。

我不确定如何检查返回的值是残差、整数还是维度值(因为 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 的残基。

4

1 回答 1

3

仅使用尺寸格式,不参考。但是,您可以使用属性的参考值。它们应被视为实际尺寸。

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

typedArray.getDimensionPixelSize
于 2013-05-29T11:19:38.807 回答