我写了一个自定义视图,它重写onMeasure()和onLayout()来完成非常特定的任务,而忽略了某些属性,如layout_height和layout_width。因为指定这些属性不再有意义,所以我想在我的布局XML中省略它们。但是,如果我这样做,我得到异常说的属性是必需的:以编程方式添加到自定义视图中的AttributeSet
RuntimeException: Binary XML file line #49: You must supply a layout_width attribute.
是否有不再需要某些必需的属性什么办法?
我打算尝试在我的视图的构造函数中以编程方式添加这些属性,但AttributeSet似乎只有检索值的方法,没有设置它们。我研究了是否可以使用attrs.xml找到解决方案,但没有看到任何有希望的东西。想法?
为什么你不能简单地使用这些属性(无论你想要什么值),并忽略它们,如果你不需要它们? – Luksprog 2013-02-15 17:57:18
我可以(而且)但我宁愿避免指定完全忽略的“必需”属性的混乱。它似乎有一个用例。例如,Android的SlidingDrawer也不尊重高度和宽度。所以我很好奇,如果Android提供了一种方法来省略通常(但并非总是)所需的标准属性。它似乎不,但我认为这是值得问。 – spaaarky21 2013-02-15 18:39:04
'SlidingDrawer'不尊重高度和宽度,但它需要**这些属性出现(所以你可以看到SDK工程师解决你所面临的问题的方式)。无论如何,这个检查是在视图的LayoutParams被构建的时候完成的,所以你可以做的事情不多(并且这不值得花费精力)。 – Luksprog 2013-02-15 19:25:06