source

Android : View.GONE과 View의 차이점투명인간?

nicesource 2023. 6. 13. 22:23
반응형

Android : View.GONE과 View의 차이점투명인간?

사이의 차이점은 무엇입니까?View.INVISIBLE그리고.View.GONE보기 가시성 상태?

보이지 않음:

이 보기는 보이지 않지만 레이아웃을 위해 공간을 사용합니다.

사라짐:

이 보기는 보이지 않으며 레이아웃을 위해 공간을 차지하지 않습니다.

설명서에서 다음과 같이 말할 수 있습니다.

보기.GONE 이 보기는 보이지 않으며 레이아웃을 위해 공간을 차지하지 않습니다.

보기.INVISIBLE 이 보기는 보이지 않지만 레이아웃을 위해 공간을 사용합니다.


사진 몇 장으로 아이디어를 정리해 보겠습니다.

아래와 같이 세 개의 버튼이 있다고 가정합니다.

여기에 이미지 설명 입력

이제 버튼 2의 가시성을 보이지 않는 것으로 설정하면 (View.INVISIBLE), 그러면 출력이

여기에 이미지 설명 입력

그리고 버튼 2의 가시성을 사라진 것으로 설정하면 (View.GONE) 그러면 출력이 다음과 같이 됩니다.

여기에 이미지 설명 입력

이것이 당신의 의심을 풀어주기를 바랍니다.

ListView 또는 GridView의 경우 가시성이 처음에 다음으로 설정되었을 때 또 다른 차이가 있습니다.

보이지 않음:

어댑터의 getView() 함수가 호출되었습니다.

사라짐:

어댑터의 getView() 함수가 호출되지 않아 뷰를 로드할 수 없습니다.

보이지 않음:
뷰를 그려야 하고 시간이 걸립니다.

사라짐:
뷰를 그릴 필요가 없습니다.

정확하고 성공적인 답변에 추가하고 싶습니다. 가시성으로 보기를 초기화할 경우View.GONE보기가 초기화되지 않았을 수 있으며 임의 오류가 발생합니다.

예를 들어 레이아웃을 다음과 같이 초기화하는 경우View.GONE그리고 나서 애니메이션을 시작하려고 하면, 제 경험으로 볼 때, 저는 제 애니메이션이 무작위로 작동하게 작동하게 됩니다.때로는 예, 때로는 아니오.

따라서 보기를 처리(크기 조정, 이동, 이동 등)하기 전에 다음과 같이 시작해야 합니다.View.VISIBLE또는View.INVISIBLE화면에서 렌더링(그리기)한 다음 처리합니다.

  • View.INVISIBLE->보기는 보이지 않지만 레이아웃에서 일부 공간을 차지합니다.

  • View.GONE->보기가 표시되지 않으며 레이아웃에서 공간을 차지하지 않습니다.

프로그램을 "Gone"으로 만들 때마다 구성 요소가 초기화됩니다. 즉, 레이아웃에서 구성 요소를 제거하고 구성 요소를 보이지 않게 만들면 레이아웃에서 동일한 공간이 사용되지만 매번 초기화할 필요는 없습니다.

Visibility=Gone을 설정한 경우 구성 요소를 초기화해야 합니다.맘에 들다

예를 들어

Button _mButton = new Button(this);
_mButton = (Button)findViewByid(R.id.mButton);

따라서 가시성 = 보이지 않는 것에 비해 시간이 더 걸릴 것입니다.

View.GONE보기는 표시되지 않으며 나머지 보기는 존재 여부를 고려하지 않습니다.

View.INVISIBLE보기는 표시되지 않지만 레이아웃에서 할당된 공간을 사용합니다.

언급URL : https://stackoverflow.com/questions/11556607/android-difference-between-view-gone-and-view-invisible

반응형