【发布时间】:2012-12-09 08:38:19
【问题描述】:
我有一个视图的 XML 定义,我使用 addChild 添加到更大的容器视图中。它基于LinearLayout,看起来基本上是这样的:
<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 等强制子级的最终尺寸,但无论如何我想了解这一点!
【问题讨论】:
标签: android android-layout layout-inflater