web-dev-qa-db-ja.com

現在のアクティビティからルートビューを取得

View.getRootView() でルートビューを取得する方法を知っています。引数が View であるボタンのonClickイベントからビューを取得することもできます。しかし、 アクティビティ view を取得するにはどうすればよいでしょうか。

587
Lalith

あなたがあなたの活動の根本的な見方を必要とするなら(それであなたはそこにあなたの内容を追加することができます)

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を使用するほうがよいでしょう。

966

これは私がsetContentViewで割り当てられたXMLファイルにあるようにルートビューを取得するために使うものです:

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(Android.R.id.content)).getChildAt(0);
256
pottedmeat

私はこれを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@#######

ご確認ください。

122
Sudar Nimalan

現在のアクティビティからルートビューを取得します。

アクティビティの中で、rootビューを取得できます。

ViewGroup rootView = (ViewGroup) ((ViewGroup) this
            .findViewById(Android.R.id.content)).getChildAt(0);

または

View rootView = getWindow().getDecorView().getRootView();
26
Elenasys

誰かがより簡単な方法を必要とするだけの場合:

次のコードは、アクティビティ全体の概要を示しています。

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

アクティビティ内の画像ビュー、たとえばアクティビティ内のimageViewを取得するには、取得したいビューのIDを追加するだけです。

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

これが誰かに役立つことを願っています

17
Salah Klein

Kotlinでは、もう少し短くすることができます。

val rootView = window.decorView.rootView
10
Artem Botnev

anyview.getRootView();が最も簡単な方法です。

2
Khemraj

あなたが活動をしているなら、ルートビューが1つしかないと仮定すると、あなたはそれをこのようにすることができます。

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

あなたはそれからあなたの本当のクラスにそれを投げることができる

またはあなたが使用することができます

getWindow().getDecorView();

これはアクションバービューを含み、あなたのビューはアクションバービューの下にあります。

0
bowman han

現在のアクティビティのビューを取得する

どのonClickでも、「view」を使用してrootViewを取得することで、「View view」を取得します。

View view = view.getRootView();

viewをフラグメントで取得する

View view = FragmentClass.getView();

0
user3509903