我一直在开发一个自定义的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
无法在相对布局中解析?
我无法看到为什么这不应该回馈正确值的任何物理原因。
请说明你是否需要项目中的其他文件,但请注意我没有触及其他任何我知道的文件。
提前致谢。