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_width
或layout_height
会在运行时导致异常,但是这两个小部件都在各自的setBaseAttributes()
类中覆盖了LayoutParams
不会引发异常,而是设置类似MATCH_PARENT
的值。
您可以尝试做同样的事情,但是如果您不在XML中提供这些属性,我希望构建工具仍会产生警告或错误。也许有一种方法可以抑制这种情况,但是我认为您不能仅对自定义ViewGroup的子视图抑制它,所以说实话,如果您是我,我不会遇到麻烦。
没什么可说的,您不必尊重XML中给出的宽度和高度,您仍然可以做任何您想做的“魔术”,如果您决定将自定义ViewGroup提供给其他开发人员,则可能会超出预期。
关于android - 不需要xml中的layout_width的自定义 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41907874/