it-swarm.com.de

Holen Sie sich die Root-Ansicht aus der aktuellen Aktivität

Ich weiß, wie man die Root-Ansicht mit View.getRootView () erhält. Ich kann die Ansicht auch über das onClick -Ereignis einer Schaltfläche erhalten, bei dem das Argument ein View ist. Aber wie bekomme ich die view in einer Aktivität ?

568
Lalith

Wenn Sie Root-Ansicht Ihrer Aktivität benötigen (damit Sie Ihre Inhalte dort hinzufügen können), verwenden Sie diese Option

findViewById(Android.R.id.content)

Es wurde auch berichtet, dass Sie auf einigen Geräten verwenden müssen 

getWindow().getDecorView().findViewById(Android.R.id.content)

stattdessen.

Bitte beachten Sie, dass dies, wie Booger berichtet hat, bei manchen Geräten möglicherweise hinter der Navigationsleiste (mit Zurück-Taste usw.) liegt (bei den meisten Geräten jedoch nicht).

Wenn Sie eine Ansicht benötigen, die Sie mit der setContentView()-Methode zu Ihrer Aktivität hinzugefügt haben, können Sie sie als Pottedmeat verwenden

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

Setzen Sie id diese ID in Ihrem XML-Layout und verwenden Sie stattdessen diese ID.

948

Dies ist, was ich verwende, um die Root-Ansicht zu erhalten, die in der mit setContentView zugewiesenen XML-Datei gefunden wird:

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

Ich habe dies in Android 4.0.3 getestet, nur:

getWindow().getDecorView().getRootView()

geben Sie die gleiche Ansicht, was wir von bekommen 

anyview.getRootView();

[email protected]#########

und 

getWindow().getDecorView().findViewById(Android.R.id.content)

kind von seiner geben

[email protected]#######

Bitte bestätigen.

119
Sudar Nimalan

Holen Sie sich die Root-Ansicht aus der aktuellen Aktivität.

In unserer Aktivität können wir die root-Ansicht erhalten mit: 

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

oder 

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

Nur für den Fall, dass jemand einen einfacheren Weg braucht:

Der folgende Code gibt einen Überblick über die gesamte Aktivität:

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

Um eine bestimmte Ansicht in der Aktivität zu erhalten, beispielsweise eine Bildansicht in der Aktivität, fügen Sie einfach die ID der Ansicht hinzu, die Sie erhalten möchten:

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

Hoffe das hilft jemandem

17
Salah Klein

In Kotlin können wir es etwas kürzer machen:

val rootView = window.decorView.rootView
5
Artem Botnev

anyview.getRootView(); wird der einfachste Weg sein.

2
Khemraj

wenn Sie sich in einer Aktivität befinden, nehmen Sie an, dass es nur eine Stammansicht gibt. Sie können sie so erhalten.

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

sie können es dann in Ihre echte Klasse umwandeln

oder du könntest verwenden 

getWindow().getDecorView();

beachten Sie, dass dies die Aktionsleistenansicht enthält. Ihre Ansicht befindet sich unter der Aktionsleistenansicht

0
bowman han

um die aktuelle Aktivität anzuzeigen

in jedem onClick erhalten wir "view view", indem wir 'view' verwenden, erhalten Sie das rootView.

View view = view.getRootView ();

und um View in fragment zu erhalten

View view = FragmentClass.getView ();

0
user3509903