我有一个视图的 XML 定义,我使用 addChild 添加到更大的容器视图中。它基于 aLinearLayout
并且看起来基本上像这样:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="52dip"
android:background="@drawable/box_bg"
android:clickable="true"
android:onClick="onTreeBoxClick"
android:orientation="horizontal" >
<ImageView android:id="@+id/box_photo"
android:layout_width="45dip"
android:layout_height="45dip"
...
/>
<RelativeLayout
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
>
(剩余部分省略——可能不相关,因为它基本上按设计工作)
当我创建这些视图时,我发现以下对我来说似乎很奇怪的行为:
在我膨胀视图之后,getLayoutParameters() 返回 null。
在我调用 addChild() 将其添加到其父级后, getLayoutParameters() 返回一个有效对象。
检查 LayoutParameters,我发现宽度和高度都设置为 -2 (WRAP_CONTENT),这显然不是我在 XML 文件中指定的。
当我查看随附的 ImageView 的布局参数时,它以指定的值读出。
谁能解释这里发生了什么?为什么没有注意到我指定的高度?
这并没有真正影响到我,因为父视图是一个自定义视图,其中我使用 MeasureSpec 等强制子级的最终尺寸,但我还是想理解这一点!