gor*_*nwd 9 android android-layout layout-inflater
我有一个视图的XML定义,我将使用addChild添加到更大的容器视图中.它基于a 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"
>
Run Code Online (Sandbox Code Playgroud)
(省略剩余 - 可能不相关,因为它基本上按设计工作)
当我创建这些视图时,我发现以下对我来说很奇怪的行为:
在我给视图充气后,getLayoutParameters()返回null.
在我调用addChild()将其添加到其父级之后,getLayoutParameters()返回一个有效的对象.
检查LayoutParameters,我发现宽度和高度都设置为-2(WRAP_CONTENT),这显然不是我在XML文件中指定的.
当我查看随附的ImageView的布局参数时,它会以指定的值读出.
谁能解释一下这里发生了什么?为什么我的指定高度没有被注意到?
这并没有真正影响我,因为父视图是一个自定义视图,其中我使用MeasureSpec等强制子项的最终尺寸,但我还是想了解这一点!
Luk*_*rog 23
您没有提供一些重要的细节.
1)在我给视图充气后,getLayoutParameters()返回null.
我会假设你用过这个:
inflater.inflate(R.layout.content, null);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,LayoutInflater
根本不能使(根本)适当LayoutParams
的根,Linearlayout
因为它不知道谁将成为它的父(因此它可以创建正确的类型LayoutParams
).如果你愿意的话:
inflater.inflate(R.layout.content, someOtherLayout, false/true);
Run Code Online (Sandbox Code Playgroud)
然后根LinearLayout
将有适当的,LayoutParams
因为它将看到类型someOtherLayout
并LayoutParams
从此信息创建.如果这不是您目前所做的,您可能需要提供一段代码以获得更好的答案.
2)在调用addChild()将其添加到其父级之后,getLayoutParameters()返回一个有效的对象.
我假设你谈论这个addView()
方法.该addView()
方法将检查LayoutParams
试图添加的视图,如果是LayoutParams
,null
那么它将自动为该视图分配LayoutParams
由其generateDefaultLayoutParams()
方法返回的对象.
3)检查LayoutParameters,我发现宽度和高度都设置为-2(WRAP_CONTENT),这显然不是我在XML文件中指定的.
正如我在2处所说的,生成的LayoutParams
是来自generateDefaultLayoutParams()
方法,该方法将返回一个LayoutParams
实例,就像父设计的那样.例如,LinearLayout
带方向HORIZONTAL
(默认值)将返回LayoutParams
宽度/高度设置为的实例WRAP_CONTENT
.
4)当我查看随附的ImageView的布局参数时,它会以指定的值读出.
因为LayoutInflater
照顾这个,因为ImageView
它在布局的内部并且有一个已知的父母,从中LayoutInflater
可以做出正确的LayoutParams
.
归档时间: |
|
查看次数: |
3535 次 |
最近记录: |