Câu trả lời:
this.getWindow().getDecorView().findViewById(android.R.id.content)
hoặc là
this.findViewById(android.R.id.content)
hoặc là
this.findViewById(android.R.id.content).getRootView()
setContentView(R.layout.my_view)
, điều này sẽ trả về cha mẹ của bố cục đó.
Bạn có thể lấy lại chế độ xem nếu bạn đặt ID vào Bố cục của mình.
<RelativeLayout
android:id="@+id/my_relative_layout_id"
Và gọi nó từ findViewById ...
findViewById
gì?
Kotlin
this.findViewById<View>(android.R.id.content)
.rootView
.setBackgroundColor(ContextCompat.getColor(this, R.color.black))
Không có phương thức "isContentViewset". Bạn có thể đặt một số lệnh gọi requestWindowFeature giả vào khối try / Catch trước khi setContentView như thế này:
thử { requestWindowFeature (Window.FEATURE_CONTEXT_MENU); setContentView (...) } Catch (AndroidR.78Exception e) { // làm smth hoặc không có gì }
Nếu chế độ xem nội dung đã được đặt, requestWindowFeature sẽ đưa ra một ngoại lệ.
Tùy chọn tốt nhất tôi tìm thấy và ít xâm phạm hơn, là đặt tham số thẻ trong xml của bạn, như
ĐIỆN THOẠI SỐ ĐIỆN THOẠI
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="phone"/>
TABLET XML KHÔNG CÓ
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="tablet">
...
</RelativeLayout>
và sau đó gọi nó trong lớp hoạt động của bạn:
View viewPager = findViewById(R.id.pager);
Log.d(getClass().getSimpleName(), String.valueOf(viewPager.getTag()));
Hy vọng nó hoạt động cho u.
getWindow().findViewById(android.R.id.content)
:)