2016-10-24 10 views
0

Android Appのビュー階層の最上部にビューを追加することが可能かどうかを知りたいと思います。現在、私は外部サービスから情報を受け取るクラスを持っています。カスタムアラートとして受け取った情報をユーザーに表示したいと思います。グローバルビュー階層の上部にこのカスタムビューを挿入することができます。これにより、他のすべてのビューより上に表示されます。私は新しい活動を始めないほうがいいですが、現在表示されているものの上にビューを追加するだけです。ビュー階層の最上部にAndroidビューを挿入

答えて

2

はい。ルートビューにアクセスするのは簡単です。活動に

FrameLayout root = (FrameLayout) findViewById(android.R.id.content); 

ルートがFrameLayoutあるので、あなたはそれが上になるようにするために、それにViewを追加する必要があります。ただし、この後に他のビューを追加するとZオーダーが変更されることに注意してください。その場合は、先頭に戻すにはViewGroup#bringChildToFront(View view)を使用する必要があります。

EDIT:

View#getRootView()を使用して別のビューからルートビューを取得することも可能です。 Viewが階層にアタッチされていない場合(View自体がルートである場合)、これは常に信頼できるわけではありません。または、親が階層にない場合(その場合、親自体がルートになります)。

+0

アクティビティではないクラスでルートビューを探したい場合はどうすればよいですか? –

+0

@AlexWilson:あなたは何を意味するのか分かりません。クラスはJava構造体であり、ビューはありません。 – DeeV

+0

それは私が思っていたことですので、私はビュークラスをインスタンス化することはできませんし、非ビューまたは非アクティビティクラスからグローバルビューツリーに追加することはできません? –

関連する問題