标准Android styleAttribute layout_width未解析但layout_height是

时间:2015-03-10 08:50:27

标签: android attributes

我一直在开发一个自定义的android视图。它嵌套在具有其他几个视图的相对布局中。我遇到的问题是,当我以编程方式检索属性值时,我无法获得android.R.Attr.layout_height,但对于某些未知的奇怪原因android.R.Attr.layout_width将无法解析该值并默认为指定的默认值。

这是在android studio中使用android 4.4开发的。

活动xml(省略其他元素):

    <RelativeLayout
        android:id="@+id/dialFrame"
        android:layout_width="440px"
        android:layout_height="match_parent"
        android:gravity="bottom"
        android:orientation="vertical"
        android:layout_marginRight="60px"
        android:layout_toRightOf="@+id/dialModifierGroup"
        android:clipChildren="false">

        <com.test.Views.CustomView
            android:id="@+id/dialElement"
            android:layout_height="440px"
            android:layout_width="440px"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"/>
     </RelativeLayout>

底层类构造函数:

    public CustomView(Context context, AttributeSet attrs) {

    super(context, attrs);

    int[] attrsArray = new int[] {
            android.R.attr.layout_height,
            android.R.attr.layout_width,
            android.R.attr.x,
            android.R.attr.y,
    };

    TypedArray ta = parentCtx.obtainStyledAttributes(attrs, attrsArray);

    height = ta.getDimensionPixelSize(0, ViewGroup.LayoutParams.WRAP_CONTENT);
    width = ta.getDimensionPixelSize(1, ViewGroup.LayoutParams.WRAP_CONTENT);
    xpos = ta.getDimensionPixelSize(2, ViewGroup.LayoutParams.WRAP_CONTENT) + (width/2);
    ypos = ta.getDimensionPixelSize(3, ViewGroup.LayoutParams.WRAP_CONTENT)+ (height/2);


    ta.recycle();

}

为什么layout_width无法在相对布局中解析?

我无法看到为什么这不应该回馈正确值的任何物理原因。

请说明你是否需要项目中的其他文件,但请注意我没有触及其他任何我知道的文件。

提前致谢。

0 个答案:

没有答案