2014-02-14 93 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