View.getRootView() でルートビューを取得する方法を知っています。引数が View であるボタンのonClick
イベントからビューを取得することもできます。しかし、 アクティビティ で view を取得するにはどうすればよいでしょうか。
あなたがあなたの活動の根本的な見方を必要とするなら(それであなたはそこにあなたの内容を追加することができます)
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を使用するほうがよいでしょう。
これは私がsetContentView
で割り当てられたXMLファイルにあるようにルートビューを取得するために使うものです:
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();
誰かがより簡単な方法を必要とするだけの場合:
次のコードは、アクティビティ全体の概要を示しています。
View v1 = getWindow().getDecorView().getRootView();
アクティビティ内の画像ビュー、たとえばアクティビティ内のimageViewを取得するには、取得したいビューのIDを追加するだけです。
View v1 = getWindow().getDecorView().getRootView().findViewById(R.id.imageView1);
これが誰かに役立つことを願っています
Kotlinでは、もう少し短くすることができます。
val rootView = window.decorView.rootView
anyview.getRootView();
が最も簡単な方法です。
あなたが活動をしているなら、ルートビューが1つしかないと仮定すると、あなたはそれをこのようにすることができます。
ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(Android.R.id.content)).getChildAt(0);
あなたはそれからあなたの本当のクラスにそれを投げることができる
またはあなたが使用することができます
getWindow().getDecorView();
これはアクションバービューを含み、あなたのビューはアクションバービューの下にあります。
現在のアクティビティのビューを取得する
どのonClickでも、「view」を使用してrootViewを取得することで、「View view」を取得します。
View view = view.getRootView();
viewをフラグメントで取得する
View view = FragmentClass.getView();