Development Tip

현재 활동에서 루트보기 가져 오기

yourdevel 2020. 10. 2. 23:24
반응형

현재 활동에서 루트보기 가져 오기


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


활동에 대한 루트 뷰가 필요한 경우 (콘텐츠를 추가 할 수 있도록) 다음을 사용하십시오.

findViewById(android.R.id.content)

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

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를 사용하는 것이 좋습니다.


다음과 setContentView같이 할당 된 XML 파일에서 찾을 수있는 루트 뷰를 얻는 데 사용합니다 .

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();

누군가에게 더 쉬운 방법이 필요한 경우를 대비하십시오.

다음 코드는 전체 활동에 대한보기를 제공합니다.

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

활동에서 인증보기 (예 : 활동 내부의 imageView)를 얻으려면 가져 오려는보기의 ID를 추가하기 만하면됩니다.

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

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


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

val rootView = window.decorView.rootView

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


활동 중이라면 루트 뷰가 하나만 있다고 가정하면 다음과 같이 얻을 수 있습니다.

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

그런 다음 실제 수업에 캐스팅 할 수 있습니다.

또는 사용할 수 있습니다

getWindow().getDecorView();

notice this will include the actionbar view, your view is below the actionbar view


to get View of the current Activity

in any onClick we will be getting "View view", by using 'view' get the rootView.

View view = view.getRootView();

and to get View in fragment

View view = FragmentClass.getView();

참고URL : https://stackoverflow.com/questions/4486034/get-root-view-from-current-activity

반응형