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


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.