2014-02-14 5 views
0

정말 바보 같은 것을 놓치고 있어야합니다.LinearLayoutParams가 캐스팅 문제를 일으키는 경우

나는 내보기에있는 LinearLayout이 : 나는 두 LinearLayout.LayoutParams

LinearLayout.LayoutParams collapsedParams; 
LinearLayout.LayoutParams openParams; 

이 나는 ​​동적으로 LayoutParams

을 설정하여 해당 뷰의 height을 변경하려고

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

을 그 다음과 같이 생성자에 설정됩니다.

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

그러나 곧 내가 내 LinearLayout에 그 PARAMS 중 하나를 적용과 같이하려고 같이

다음과 같은 치명적인 예외
_editTextViews.setLayoutParams(collapsedParams); 

내가 얻을 : 처음에는 enter image description here

난 내 프로젝트를 생각 그것은 내가 선형 레이아웃 매개 변수를 사용하도록 상대 레이아웃을 강제로 시도하고 있다고 생각하는 것처럼 보일 필요가 있지만 모든 것이 LinearLayout입니다. 문제의 LinearLayout에는 몇 개의 RelativeLayouts가 포함되어 있습니다. 나는 그것이/왜 그것이 문제가 될지 모른다.

답변

5
LayoutParams의 '유형을 변경

도와주세요 ViewGroup.LayoutParams 또는 RelativeLayout.LayoutParams 중 하나에.

적용 할 LayoutParams는 부모보기 레이아웃과 일치해야합니다. LayoutParams은 뷰가 상위 뷰 (레이아웃)에 배치되는 방법을 정의합니다. 각 레이아웃 유형은 뷰를 레이아웃하기 위해 다른 매개 변수를 사용하기 때문에 (예 : LinearLayout 만 가중치를 가지며 RelativeLayout 만 앵커를 사용할 수 있음) 모두 자체적으로 LayoutParams을가집니다.

+0

상위 레이아웃? 나는 이전에 viewGroup을 시도했으나 다시 시도 할 것이다. 그러나 왜 실제로 부모 레이아웃과 레이아웃이 아닌가? – erik

+0

내 편집 된 답변보기. 이것은 확실히 작동 할 것입니다. –

+0

감사합니다 .. 훌륭한 작품 .. – erik

관련 문제