获取ObtainStyledAttributes以在Android的xamarin中正常工作

时间:2017-12-21 20:26:55

标签: android xamarin xamarin.android controls

我在 Xamarin.Android 中构建自定义控件,并且作为该控件初始化的一部分,我想要读取控件的指定高度。

我想使用ObtainStyledAttributes,因为它为我提供了一种方法,可以轻松地将字符串尺寸转换为尺寸。

所以我打电话给:

 context.ObtainStyledAttributes(attrs, new int [] { problemhere })

我遇到的问题是我不知道如何为layout_height指定常量(这是我想要提取的参数)。当我查看 Xamarin 文档时,它指出已定义Resource.Attribute.LayoutWidth const,但我无法在源代码中引用它。

我知道我也可以使用getAttributeValue()作为字符串获取,但它不会转换。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您正在寻找Android操作系统级资源:

int[] attrsArray = { 
    Android.Resource.Attribute.LayoutWidth,
    Android.Resource.Attribute.LayoutHeight 
};
var typedArray = context.ObtainStyledAttributes( attrsArray);
var layout_width = typedArray.GetDimensionPixelSize(0, ViewGroup.LayoutParams.WrapContent);
var layout_height = typedArray.GetDimensionPixelSize(1, ViewGroup.LayoutParams.WrapContent);