Android SDK有TableLayout容器:
<TableLayout
android:id="@+id/tablelayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableRow>
<TextView
android:text="Some text"
android:padding="3dip" />
</TableRow>
</TableLayout>
TableLayout有layout_width和layout_height。几乎每个View都需要在xml中指定layout_width和layout_height。但 TableRow 不需要它。
我想创建布局(从 FrameLayout 扩展),其中元素不需要layout_width和layout_height(我将用一些魔法在内部计算大小)。
如何从自定义视图的 xml 中删除layout_width/layout_height 要求?
据我所知,这些属性是工具所必需的,并且工具本身中的某些框架小部件(例如 TableLayout 和 TableRow)存在例外。这可能与这些小部件为其子部件生成 LayoutParams 的方式有关;通常缺乏layout_width
or layout_height
会在运行时导致异常,但是这两个小部件都会覆盖setBaseAttributes()
在各自的LayoutParams
类不抛出异常而是设置一个值,例如MATCH_PARENT
.
您可以尝试执行相同的操作,但我预计如果您不在 XML 中提供这些属性,构建工具仍会生成警告或错误。也许有一种方法可以抑制这种情况,但我认为您不能仅针对自定义 ViewGroup 的子视图抑制它,所以老实说,如果我是您,我就不会遇到麻烦。
没有什么说您必须遵守 XML 中给出的宽度和高度,您仍然可以做任何您想要的“魔法”,只是如果您决定将自定义 ViewGroup 提供给其他开发人员,您可能会超出预期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)