アクティビティのコンテンツビューを取得する方法?


279

ActivityにcontentViewがあるかどうかを確認するには、どのメソッドを呼び出す必要がありますか(setContentView()メソッドが呼び出された後)?

回答:


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

または

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

または

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

4
またはgetWindow().findViewById(android.R.id.content):)
Alex Lockwood 2013年

1
親ビューのフェッチに関する限り、これは正常に機能します... BUt ..試した場合this.findViewById(android.R.id.content).setBackgroundDrawable(d); それは動作しません..提案していただけますか..事前の感謝
Rajesh Wadhwa '

3
を使用してXMLからレイアウトをインストールすると、そのレイアウトのsetContentView(R.layout.my_view)返されます。
Jay Lieske 2013

こんにちは@ernestこんにちは私のレイアウトの場合のように並べ替えの質問があります。そして下部にSatelliteMenu、メニュー項目をぼかしたいので開きます。
Devendra Singh

1
Android.Resource.Idのコンテンツが存在しません。
ジャスティン

23

レイアウトにIDを設定すると、ビューを元に戻すことができます。

<RelativeLayout
    android:id="@+id/my_relative_layout_id"

そして、findViewByIdから呼び出します...


これは、インストールされたレイアウトのルートを取得する最も堅牢な方法です。
Jay Lieske 2013

3
あなたは何に行きfindViewByIdますか?
トランス

1
@trans contentView = findViewById(R.id.my_relative_layout_id);
Justin Liu



5

またonContentChanged()setContentView()が呼び出されたときに起動されるものをオーバーライドすることもできます。


アーネストの答えは、スクロール可能なビューが含まれていても、現在フォーカスされているビューを提供します
YuDroid

2

使用している場合 Kotlin

    this.findViewById<View>(android.R.id.content)
                         .rootView
                         .setBackgroundColor(ContextCompat.getColor(this, R.color.black))

1

「isContentViewSet」メソッドはありません。次のように、setContentViewの前にtry / catchブロックにダミーのrequestWindowFeature呼び出しを配置できます。

{を試す
  requestWindowFeature(Window.FEATURE_CONTEXT_MENU);
  setContentView(...)
}キャッチ(AndroidRuntimeException e){
  //何もしないか何もしない
}

コンテンツビューがすでに設定されている場合、requestWindowFeatureは例外をスローします。


-3

私が見つけた最も邪魔にならない最善のオプションは、次のようにタグパラメータをxmlに設定することです

電話XMLレイアウト

<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"/>

タブレットXMLレイアウト

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

アクティビティクラスでこれを呼び出します。

View viewPager = findViewById(R.id.pager);
Log.d(getClass().getSimpleName(), String.valueOf(viewPager.getTag()));

それがあなたのために働くことを願っています。


2
これはどのように質問に答えますか?
Onik 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.