自定义视图,不需要 xml 中的layout_width

2023-12-10

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(使用前将#替换为@)

自定义视图,不需要 xml 中的layout_width 的相关文章

随机推荐