Helpex - Trao đổi & giúp đỡ Đăng nhập
270

Tôi nên gọi phương thức nào để biết nếu một Activity có contentView của nó (một khi phương thức setContentView () đã được gọi)?

270 hữu ích 0 bình luận 220k xem chia sẻ
513
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()
513 hữu ích 5 bình luận chia sẻ
21

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 ...

21 hữu ích 3 bình luận chia sẻ
11

Làm thế nào về

View view = Activity.getCurrentFocus();
11 hữu ích 2 bình luận chia sẻ
10

Bạn có thể muốn thử View.getRootView().

10 hữu ích 0 bình luận chia sẻ
5

Bạn cũng có thể ghi đè lên onContentChanged()một trong số những người khác bị sa thải khi setContentView()được gọi.

5 hữu ích 1 bình luận chia sẻ
1

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ệ.

1 hữu ích 0 bình luận chia sẻ
0

Nếu bạn đang sử dụng Kotlin

    this.findViewById<View>(android.R.id.content)
                         .rootView
                         .setBackgroundColor(ContextCompat.getColor(this, R.color.black))
0 hữu ích 0 bình luận chia sẻ
4

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.

4 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ android , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading