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。几乎每个视图都需要在xml中指定layout_width和layout_height。但是TableRow不需要它。

我想创建Layout(从FrameLayout扩展),该元素将不需要layout_width和layout_height(我会用一些魔术在内部计算尺寸)。

如何从xml中删除自定义视图的layout_width / layout_height要求?

最佳答案

据我所知,工具需要这些属性,并且工具本身中的某些框架小部件(如TableLayout和TableRow)会产生异常。这可能与这些小部件为其子代生成LayoutParams的方式有关。通常,缺少layout_widthlayout_height会在运行时导致异常,但是这两个小部件都在各自的setBaseAttributes()类中覆盖了LayoutParams不会引发异常,而是设置类似MATCH_PARENT的值。

您可以尝试做同样的事情,但是如果您不在XML中提供这些属性,我希望构建工具仍会产生警告或错误。也许有一种方法可以抑制这种情况,但是我认为您不能仅对自定义ViewGroup的子视图抑制它,所以说实话,如果您是我,我不会遇到麻烦。

没什么可说的,您不必尊重XML中给出的宽度和高度,您仍然可以做任何您想做的“魔术”,如果您决定将自定义ViewGroup提供给其他开发人员,则可能会超出预期。

关于android - 不需要xml中的layout_width的自定义 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41907874/

10-10 09:37