从属性中检索边距

时间:2014-07-11 09:55:41

标签: android

我试图从.xml文件中获取边距。目前我这样做:

mUserDefinedLeftMargin = attrs.getAttributeIntValue("http://schemas.android.com/apk/res/android", "layout_marginLeft", 0);

其中attrs的类型为AttributeSet(在构造函数或我的类中收到的RelativeLayout

.xml看起来像这样:

    <ch......MyCustomView
        android:id="@+id/update_progress"
        android:layout_width="400dp"
        android:layout_height="200dp"
        android:layout_marginLeft="10dp"
        android:layout_alignParentRight="true"
        android:visibility="invisible" />
在上述调用结束时,

mUserDefinedLeftMargin仍为0。为什么?

1 个答案:

答案 0 :(得分:1)

这是因为 dp 不是int值。你应该先把它作为文本:

String dpSizeText = attrs.getAttributeValue("http://schemas.android.com/apk/res/android", "layout_marginLeft");

然后将其转换为像素:

int dpSizeInt = Integer.parseInt(dpSizeText.substring(0, dpSizeText.indexOf("dp")));
Resources r = getResources();
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpSizeInt, r.getDisplayMetrics());