android get - Erhalten Sie die Root-Ansicht von der aktuellen Aktivität




content view (7)

Ich weiß, wie man mit View.getRootView() die Root-Ansicht View.getRootView() . Ich bin auch in der Lage, die Ansicht von onClick Ereignis einer Schaltfläche zu onClick , wo das Argument eine View . Aber wie kann ich in einer activity ?


Answers

Wenn Sie eine Stammansicht Ihrer Aktivität benötigen (damit Sie Ihre Inhalte dort hinzufügen können), verwenden Sie

findViewById(android.R.id.content)

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

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

stattdessen.

Bitte beachten Sie, dass, wie Booger berichtete, dies auf manchen Geräten hinter der Navigationsleiste (mit Zurück-Taste usw.) sein kann (aber auf den meisten Geräten scheint es nicht so zu sein).

Wenn Sie eine Ansicht benötigen, die Sie zu Ihrer Aktivität hinzugefügt haben, indem setContentView() Methode setContentView() verwenden, dann können Sie wie pottedmeat schreiben

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

Aber setzen Sie ID einfach auf diese Ansicht in Ihrem XML-Layout und verwenden Sie stattdessen diese ID.


um die aktuelle Aktivität anzuzeigen

in jedem onClick bekommen wir "Ansicht anzeigen", mit 'view' erhalten Sie die rootView.

Ansicht anzeigen = view.getRootView ();

und um Ansicht in Fragment zu erhalten

Ansicht anzeigen = FragmentClass.getView ();


Wenn Sie in einer Aktivität sind, nehmen Sie an, dass es nur eine Stammansicht gibt, Sie können es so erhalten.

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

Sie können es dann in Ihre wahre Klasse umsetzen

oder du könntest verwenden

getWindow().getDecorView();

Beachten Sie, dass dies die Actionbar-Ansicht enthält. Ihre Ansicht befindet sich unterhalb der Actionbar-Ansicht


Just incase Jemand braucht einen einfacheren Weg:

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

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

Um eine certlianische Ansicht in der Aktivität zu erhalten, z. B. eine imageView innerhalb 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


Ich habe das nur in Android 4.0.3 getestet:

getWindow().getDecorView().getRootView()

geben Sie die gleiche Ansicht, von der wir kommen

anyview.getRootView();

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

und

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

Kind von ihm geben

[email protected]#######

Bitte bestätigen.


Das ist, was ich verwende, um die Root-Ansicht zu erhalten, wie sie in der XML-Datei gefunden wird, die mit setContentView zugewiesen wurde:

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

In meinem Fall passierte dieses Problem, als ich ein Maven-Projekt in Eclipse importierte. Um dies zu beheben, habe ich in pom.xml folgendes hinzugefügt:

<properties>
   ...
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Wechseln Sie dann im Kontextmenü des Projekts zu "Maven -> Projekt aktualisieren ..." und drücken Sie OK.

Das ist es. Hoffe das hilft.







android android-activity view