현재 활동에서 루트 보기 가져오기
View.getRootView()로 루트 뷰를 얻는 방법을 알고 있습니다.또한 버튼을 사용하여 보기를 볼 수 있습니다.onClick
인수가 View인 이벤트입니다.그러나 활동에서 보기를 얻으려면 어떻게 해야 합니까?
활동의 루트 보기가 필요한 경우(내용을 추가할 수 있도록) 사용
findViewById(android.R.id.content).getRootView()
또한 일부 장치에서는 사용해야 하는 것으로 보고되었습니다.
getWindow().getDecorView().findViewById(android.R.id.content)
대신.
Booger가 보고한 바와 같이 일부 장치에서는 탐색 모음 뒤에 있을 수 있습니다(뒤로 버튼 등). 그러나 대부분의 장치에서는 그렇지 않은 것 같습니다.
사용하여 활동에 추가한 보기가 필요한 경우setContentView()
그 다음에 당신이 사용할 수 있는 점박이 고기로 쓰여진 방법.
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);
Android 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();
코틀린에서 우리는 그것을 조금 더 짧게 할 수 있습니다.
val rootView = window.decorView.rootView
누군가 더 쉬운 방법이 필요한 경우:
다음 코드는 전체 활동을 보여줍니다.
View v1 = getWindow().getDecorView().getRootView();
활동에서 특정 보기(예: 활동 내부의 이미지 보기)를 얻으려면 원하는 해당 보기의 ID를 추가하면 됩니다.
View v1 = getWindow().getDecorView().getRootView().findViewById(R.id.imageView1);
이것이 누군가에게 도움이 되기를 바랍니다.
코틀린 확장 솔루션
활동에서 접근을 단순화하려면 이 옵션을 사용합니다.그러면 직접 다음을 참조할 수 있습니다.rootView
활동에서 또는activity.rootView
외부:
val Activity.rootView get() = window.decorView.rootView
일관성을 위해 fragments에 동일한 내용을 추가하려면 다음을 추가합니다.
val Fragment.rootView get() = view?.rootView
데이터 바인딩 라이브러리를 사용하는 사용자는 다음을 사용하여 현재 활동의 루트를 확인할 수 있습니다.
View rootView = dataBinding.getRoot();
Kotlin 사용자의 경우 훨씬 더 간단합니다.
val rootView = dataBinding.root
anyview.getRootView();
가장 쉬운 방법이 될 것입니다.
현재 활동 보기
rootView를 얻기 위해 'view'를 사용하여 "view view"를 표시합니다.
View = view.getRootView();
그리고 뷰를 단편적으로 얻기 위해.
보기 = FragmentClass.getView();
다른 Kotlin Extension 솔루션
활동 보기가 xml로 선언된 경우(예:activity_root.xml
), xml을 열고 루트 뷰에 ID를 할당합니다.
android:id="@+id/root_activity"
이제 클래스에서 다음을 사용하여 보기를 가져옵니다.
import kotlinx.android.synthetic.main.activity_root.root_activity
이제 사용할 수 있습니다.root_activity
견해대로
활동 중인 경우 루트 보기가 하나만 있다고 가정하면 다음과 같이 얻을 수 있습니다.
ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
그러면 당신은 그것을 당신의 실제 수업에 던질 수 있습니다.
또는 사용할 수 있습니다.
getWindow().getDecorView();
여기에는 수행 표시줄 뷰가 포함됩니다. 보기는 수행 표시줄 뷰 아래에 있습니다.
언급URL : https://stackoverflow.com/questions/4486034/get-root-view-from-current-activity
'programing' 카테고리의 다른 글
Ruby 또는 Rails를 사용하여 URL에서 URL 매개 변수를 추출하는 방법은 무엇입니까? (0) | 2023.05.31 |
---|---|
XSSF Workbook - Java - POI .jar 해결 문제 (0) | 2023.05.31 |
동적 버튼 클릭 이벤트 핸들러 (0) | 2023.05.31 |
위치 매개 변수가 있는 Git 별칭 (0) | 2023.05.31 |
Ruby 'require' 오류: 해당 파일을 로드할 수 없습니다. (0) | 2023.05.31 |