2012-03-16 2 views
2

동적으로 추가 된 ImageView가있는 LinearLayout을 만들었습니다. 나는 50 개의 ImageViews 목록을 가질 수 있지만 동시에 3 개의 이미지 뷰어 만 표시됩니다.Android에서 LinearLayout에서보기 제거

3 개의 항목을 참조해야하므로 ImageView item1, item2, item3이라는 내 활동의 상단에 개인 변수가 설정되어 있습니다.

버튼을 누르면 목록의 다음 ImageView가 레이아웃에 추가되고 첫 번째 항목이 제거됩니다. 그런 다음 item1, item2 및 item3에 대한 참조를 다시 설정합니다.

제 문제는 제대로 작동하는 반면 그림 문제가있는 것 같습니다. item3 (마지막 ImageView)는 이전 ImageView 위에 추가 된 새 항목을 표시합니다. 내 그림을 가로 모드로 전환 한 다음 초상화로 돌아 가면 문제가 해결되기 때문에 그림 문제로 보입니다.

편집 : 레이아웃에 .invalidate()를 추가하고 이미지 뷰 자체에 행운을 추가하려고했습니다.

+0

관련 코드 및 스크린 샷 붙여 넣기 –

+0

보기에'invalidate()'메소드를 사용하고 null이 아닌 경우'View.GONE'에 대한 가시성을 설정하여 삭제 한보기가 노미 어로 표시되는지 확인하십시오. – Rajkiran

+0

보기를 제거하고 바꾸는 대신. 왜 그냥 재활용하지 않습니까? 실제보기를 이동하는 대신 의미는 내용을 바꾸기 만하면됩니다. ArrayAdapter에서 할 때와 마찬가지로 – slayton

답변

3

글쎄 이러한 방식으로 참조를 새로 만들려고합니다.

layout.removeAllViews(); 
    layout.refreshDrawableState(); 

다음 3 개의 항목을 LinearLayout에 추가하십시오. 희망이 도움이됩니다. :)

+0

이것이 올바른 방법입니다. 'removeAllViews()'는 내부적으로'requestLayout()'과'invalidate (true)'를하기 때문에'refreshDrawableState()'를 호출 할 필요가 없다. – linakis

관련 문제