2014-02-14 71 views
0

我必须错过一些非常愚蠢的东西。LinearLayoutParams导致铸造问题

我在视图中的LinearLayout:

_editTextViews = (LinearLayout)findViewById(R.id.editDesAndLocViews); 

我试图通过设置LayoutParams

动态更改视图的height我有两个LinearLayout.LayoutParams

LinearLayout.LayoutParams collapsedParams; 
LinearLayout.LayoutParams openParams; 

那在构造函数中设置如下:

collapsedParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,0); 
openParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); 

但只要我尝试应用这些PARAMS之一,我LinearLayout,像这样:

_editTextViews.setLayoutParams(collapsedParams); 

我得到以下致命异常: enter image description here

起初我还以为我的项目需要清理,因为它似乎认为我试图强制相对布局使用线性布局参数,但一切都是LinearLayout。有问题的LinearLayout确实包含一对RelativeLayouts。我不知道是否/为什么会是这个问题。

请帮助

回答

5

更改LayoutParams S'型要么ViewGroup.LayoutParamsRelativeLayout.LayoutParams

您申请的LayoutParams必须匹配父级布局的视图。 LayoutParams定义View在其父视图(布局)中的布局方式。因为每种布局类型在布局视图时都有不同的参数(例如,只有LinearLayout具有权重,只有RelativeLayout可以使用锚点),它们都有自己的LayoutParams

+0

父级布局?我以前试过viewGroup,会再试一次..但为什么父母的布局,而不是我实际上正在改变的布局 – erik

+0

看到我编辑的答案。这一定会奏效。 –

+0

谢谢..作品很棒.. – erik