현재 활동에서 루트보기 이벤트에서 보기를

View.getRootView ()로 루트 뷰를 얻는 방법을 알고 있습니다. 또한 onClick인수가 View 인 버튼의 이벤트에서 보기를 얻을 수 있습니다 . 하지만 어떻게 내가 얻을 수있는 보기 에서 활동을 ?



답변

활동에 대한 루트보기가 필요한 경우 (여기에 내용을 추가 할 수 있음)

findViewById(android.R.id.content).getRootView()

또한 일부 장치에서는 사용해야한다고보고되었습니다.

getWindow().getDecorView().findViewById(android.R.id.content)

대신에.

Booger가보고 한 바와 같이 일부 기기에서는 탐색 표시 줄 (뒤로 버튼 등) 뒤에있을 수 있지만 대부분의 기기에서는 그렇지 않은 것 같습니다.

당신이 setContentView()방법을 사용하여 활동에 추가 한보기를 얻을 필요가 있다면 pottedmeat이 쓴대로 사용할 수 있습니다

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

그러나 XML 레이아웃에서 ID를이보기로 설정하고 대신이 ID를 사용하는 것이 좋습니다.


답변

이것은 내가 할당 된 XML 파일에서 발견 된 루트보기를 얻는 데 사용하는 것입니다 setContentView.

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

답변

나는 이것을 안드로이드 4.0.3에서 테스트했다.

getWindow().getDecorView().getRootView()

우리가 얻는 것과 같은 견해를 주다

anyview.getRootView();

com.android.internal.policy.impl.PhoneWindow$DecorView@#########

getWindow().getDecorView().findViewById(android.R.id.content)

아이에게주는

android.widget.FrameLayout@#######

확인 해주세요.


답변

현재 활동에서 루트 뷰를 가져옵니다.

우리의 활동 안에서 우리 root는 다음과 같은 견해를 얻을 수 있습니다 .

ViewGroup rootView = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

또는

View rootView = getWindow().getDecorView().getRootView();

답변

Kotlin에서는 조금 더 짧게 할 수 있습니다.

val rootView = window.decorView.rootView

답변

누군가 더 쉬운 방법이 필요한 경우를 대비하여 :

다음 코드는 전체 활동을 보여줍니다.

View v1 = getWindow().getDecorView().getRootView();

액티비티에서 certian 뷰를 얻으려면 (예 : 액티비티 내부의 imageView) 가져 오려는 뷰의 ID를 추가하십시오.

View v1 = getWindow().getDecorView().getRootView().findViewById(R.id.imageView1);

희망이 누군가에게 도움이되기를 바랍니다.


답변

anyview.getRootView(); 가장 쉬운 방법입니다.