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 ?
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.
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);
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.
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();
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
In Kotlin können wir es etwas kürzer machen:
val rootView = window.decorView.rootView
anyview.getRootView();
wird der einfachste Weg sein.
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
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 ();