동적으로 선형 레이아웃을 채 웁니다. 응답에 따라 과거의 하위 뷰를 지우고 새로운 뷰를 만들어야합니다. 나는이 문서를 읽었지만 몇 가지 방법과 여전히 혼동된다. 모두 같은 기능을한다. 어떤 기능을 사용해야합니까?removeAllViews()와 removeAllViewsInLayout()의 차이점
답변
removeAllViews() :이 메소드를 사용하여 ViewGroup에서 모든 자식 뷰를 제거합니다. removeAllViewsInLayout() : ViewGroup 하위 클래스에 의해 호출되어 자식 뷰를 자식 뷰에서 제거합니다. 먼저 자식 뷰를 화면에 표시해야만 렌더링 할 자식 뷰의 수를 계산할 수 있습니다.
건배! 그래서 당신은, 당신은뿐만 아니라 removeAllViews()
를 사용할 수있는 사용자가 선택한 한 번에 invalidate()
를 호출하고 자신에게 비트를 저장하지 않으려면
public void removeAllViews() {
removeAllViewsInLayout(); // Details implemented here
requestLayout();
invalidate(true);
}
:
는 소스에서 찾고, 많은 차이그게 진흙처럼 분명히 말하는 문서의 멋진 버전입니다. View 자체 (LinearLayout과 같은) 자체적으로 하위 뷰를 제거하는 ViewGroup 하위 클래스가 아닌가? 그리고 얼마나 많은 자식 뷰를 렌더 할 지 계산하기 전에 뷰가 먼저 화면의 크기를 알아야 하는지를 어떻게 알 수 있습니까? –
음이없는 타이핑.
편집
자세한 내용은 David Lui 님의 답변을 참조하십시오. 요약하면보기를 만드는 과정에 있지 않는 한 removeAllViews()
을 사용합니다.이 경우에는 removeAllViewsInLayout()
이라고 부릅니다.
Scott Biggs가 지적했듯이, 그 차이는 큰 것이 아닙니다. 유일한 차이점은 removeAllViews()
은 requestLayout()
과 invalidate()
입니다. 이 차이가 왜 중요한 이유는 removeAllViewInLayout()
이라는 이름을 이해하는 것입니다. 혼란스럽게도 그 의미는 "이 뷰 레이아웃 내의 모든 뷰를 제거하는 것이 아닙니다."
레이아웃 동안보기를 제거합니다. onLayout() 메서드에서 더 많은 뷰를 제거해야하는 경우 유용합니다.
따라서 removeAllViewsInLayout()
은 실제로 모든보기를 삭제하는 것을 의미하며 레이아웃 통과 (즉, onLayout()) 중에이 메소드를 호출합니다. 따라서 removeAllViewsInLayout()
은 requestLayout()
으로 전화를 걸지 않습니다. 현재 이미 레이아웃 패스에 있다고 가정하기 때문에 다른 레이아웃 패스를 요청하는 것은 불필요합니다.
removeAllViewsInLayout()
을 사용하는 경우 레이아웃 패스 중에 전화 하시거나 필요에 따라 requestLayout()
및 invalidate()
번으로 전화하시는 것은 사용자의 책임입니다.
와우, 깊은 설명 주셔서 감사합니다! 아마도 그들은 전치사 _in_의 모호한 사용을 피하기 위해'removeAllViewsDuringLayoutConstruction()'을 호출했을 것입니다. 아마도 약간의 문서가 도움이되었을 것입니다. Nahh, 완전한 프로그래머에게 심장 마비를 줄 것이라고. :) –
- 1. BeanNameUrlHandlerMapping의 차이점 SimpleUrlHandlerMapping의 차이점
- 2. 차이점 downcase와 downcase의 차이점! Ruby에서
- 3. IE5와 IE8의 차이점 모드 차이점
- 4. PhpStorm의 차이점
- 5. 컴파일러 차이점
- 6. 차이점 포크
- 7. sha1의 차이점
- 8. CLR의 차이점
- 9. 정렬 차이점
- 10. 네트워크의 차이점
- 11. RegEx의 차이점
- 12. 파일이없는 차이점
- 13. g ++ 차이점
- 14. 라이브러리의 차이점
- 15. 행간 차이점
- 16. 차이점, 반대로
- 17. 차이점 org.apache.hadoop.fs
- 18. 게으른 로딩 Javascript 파일과 차이점 사이의 차이점</body>
- 19. createObject와 createManagedObject의 차이점
- 20. 이 두 구문의 차이점
- 21. 모듈과 클로저의 차이점
- 22. JMX와 RMI의 차이점
- 23. json 사전과 해시의 차이점
- 24. SPFile과 PublishingPage 클래스의 차이점
- 25. Matlab과 Python의 콜론 차이점
- 26. libs와 src 폴더의 차이점
- 27. V8 및 ECMAScript 차이점
- 28. iPhone에서 viewController 사이의 차이점
- 29. Java For Loop의 차이점
- 30. SOAP와 KSOAP의 차이점
같은 질문은 여기에 있습니다. 다른 선형 레이아웃에 getview의 선형 레이아웃을 추가합니다. RemoveAllViewsInLayout() RemoveAllViewsInLayout() 대신 사용하여 추가 된 linearlayout 갑자기 사라지고 (및 스크롤 후 0_o) – Boy