안드로이드 : 보이지 않는 것과 사라진 것의 차이점은 무엇입니까?


476

View 가시성 상태 invisible와 차이점은 무엇입니까 gone?


26
뷰가 사라지면 레이아웃에서 공간을 차지하지 않습니다. 보이지 않으면 레이아웃에 필요한 공간이 필요하지만 보이지 않습니다.
DroidBender

답변:


708

보이지 않는 :

이보기는 보이지 않지만 레이아웃 목적으로 여전히 공간을 차지합니다.

지나간:

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


113
HTML / CSS의 display:none& 와 비슷해 보입니다 visibility:hidden:-)
anishsane

또는
Wpf

1
보이지 않으면 클릭해도 비활성화됩니까?
Kuldeep Yadav 1

1
@KuldeepYadav 예, 사라지고 보이지 않습니다.
스티브 모 레츠

1
미래의 호기심 많은 독자들을 위해 : 목록 / 그리드보기에서 performItemClick을 사용할 수는 있지만 보이지 않습니다.
kiranking

264

에서 문서 그런 말을 할 수

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

INVISIBLE보기이 보기는 보이지 않지만 레이아웃 목적으로 여전히 공간을 차지합니다.


일부 그림으로 아이디어를 명확하게합니다.

아래와 같이 세 개의 버튼이 있다고 가정하십시오.

여기에 이미지 설명을 입력하십시오

이제 버튼 2의 가시성을 보이지 않음 ( View.INVISIBLE)으로 설정하면 출력은

여기에 이미지 설명을 입력하십시오

그리고 버튼 2의 가시성을 사라진 ( View.GONE)으로 설정하면 출력이

여기에 이미지 설명을 입력하십시오

이것이 당신의 의심을 없애기를 바랍니다.


4
아이디어를 정리해야합니까? 설명만으로도 충분 해 보입니다.
John Dvorak

16
@JanDvorak :) 좋아! 귀하의 질문에 대한 답변이 없습니다. 이것이 모든 사용자에게 매우 분명하다고 생각되는 경우 허용되는 답변은 의견이며 설명서 사이트 링크가 있어야합니다. 제가 맞습니까?
Pankaj Kumar

edittext에 사용하면 어떻게됩니까? edittext에서 값을 얻을 수 있습니까?
Ashish

32

ListView 또는 GridView의 경우 가시성이 처음으로 설정된 경우 다른 차이점이 있습니다.

보이지 않는 :

어댑터의 getView () 함수 호출

지나간:

어댑터의 getView () 함수가 호출되지 않아 필요하지 않은 경우 뷰를로드 할 수 없음


10

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

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


8
뷰가 그려지지 않고 측정되고 배치됩니다.
cyroxis

@cyroxis는 아마도 ondraw 메소드를 의미합니다!
David

7

가시성으로 뷰를 초기화하면 뷰가 View.GONE초기화되지 않아 임의의 오류가 발생 한다는 올바른 대답을 추가하고 싶습니다 .

예를 들어 레이아웃을 다음과 같이 초기화하면 View.GONE 다음 애니메이션을 시작하려고하면 내 경험상 애니메이션이 무작위로 작동합니다. 때때로 그렇습니다. 가끔 그렇습니다.

따라서 뷰를 처리 (크기 조정, 이동 등)하기 전에 뷰에서 초기화 View.VISIBLE하거나 View.INVISIBLE화면에서 렌더링 (그리기) 한 다음 처리해야합니다.


그렇습니다, 당신 말이 맞습니다.보기가 때때로있을 때만 작동합니다.GONE
Suraj Bahadur

4

프로그램을 컴파일 할 때마다 사라지다 구성 요소가 초기화됩니다. 즉, 구성 요소를 레이아웃에서 제거하고 구성 요소를 보이지 않게 할 때 레이아웃에서 동일한 공간을 차지하지만 초기화 할 필요가 없을 때마다 .

Visibility = Gone을 설정하면 구성 요소를 초기화해야합니다.

예 : Button _mButton = 새 버튼 (this);

_mButton = (버튼) findViewByid (R.id.mButton);

따라서 가시성 = 보이지 않는 것과 비교하여 더 많은 시간이 걸립니다.


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

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


0

View.GONE = 뷰가 표시되지 않고 나머지 뷰는 그 존재를 고려하지 않습니다.

View.INVISIBLE =보기가 표시되지 않지만 레이아웃에서 지정된 공간을 차지합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.