Ich weiß, wie man die Stammansicht mit View.getRootView () erhält . Ich kann die Ansicht auch von einem onClick
Ereignis einer Schaltfläche abrufen, bei dem das Argument eine Ansicht ist . Aber wie kann ich das bekommen Ansicht in einer Aktivität erhalten ?
android
android-activity
view
Lalith
quelle
quelle
setContentView()
und die von Ihnen angegebene Ansicht ist bereits das Stammverzeichnis. Wenn Sie das Handle dieser Ansicht benötigen, geben Sie einfach eine ID in XAML ein und esfindViewById()
wäre in Ordnung.Antworten:
Wenn Sie eine Stammansicht Ihrer Aktivität benötigen (damit Sie Ihre Inhalte dort hinzufügen können), verwenden Sie
Es wurde auch berichtet, dass Sie auf einigen Geräten verwenden müssen
stattdessen.
Bitte beachten Sie, dass sich dies, wie Booger berichtete, auf einigen Geräten möglicherweise hinter der Navigationsleiste (mit Zurück-Taste usw.) befindet (auf den meisten Geräten scheint dies jedoch nicht der Fall zu sein).
Wenn Sie eine Ansicht erhalten
setContentView()
möchten, die Sie mithilfe der Methode zu Ihrer Aktivität hinzugefügt haben, können Sie diese wie im Topffleisch beschrieben verwendenAber setzen Sie besser einfach die ID auf diese Ansicht in Ihrem XML-Layout und verwenden Sie stattdessen diese ID.
quelle
Dies ist, was ich verwende, um die Stammansicht zu erhalten, wie sie in der XML-Datei zu finden ist, die zugewiesen ist mit
setContentView
:quelle
ActionBar
einzubeziehen?Ich habe dies nur in Android 4.0.3 getestet:
Geben Sie die gleiche Ansicht, was wir bekommen
und
Kind von seiner geben
Bitte bestätigen.
quelle
Ruft die Stammansicht der aktuellen Aktivität ab.
Innerhalb unserer Aktivität können wir die
root
Ansicht erhalten mit:oder
quelle
In Kotlin können wir es etwas kürzer machen:
quelle
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, z. B. eine Bildansicht in der Aktivität, fügen Sie einfach die ID der Ansicht hinzu, die Sie erhalten möchten:
Hoffe das hilft jemandem
quelle
findViewById(R.id.imageView1);
die Aktivität einfach aufrufen, wenn Sie die spezifische Ansicht wünschen.anyview.getRootView();
wird der einfachste Weg sein.quelle
um einen Überblick über die aktuelle Aktivität zu erhalten
In jedem onClick erhalten wir "View view", indem wir 'view' verwenden, um die rootView zu erhalten.
View view = view.getRootView ();
und um Ansicht in Fragment zu bekommen
Ansicht view = FragmentClass.getView ();
quelle
Kotlin-Erweiterungslösung
Verwenden Sie diese Option, um den Zugriff in einer Aktivität zu vereinfachen. Dann können Sie direkt
rootView
von der Aktivität oderactivity.rootView
außerhalb darauf verweisen :Wenn Sie aus Gründen der Konsistenz dasselbe für Fragmente hinzufügen möchten, fügen Sie Folgendes hinzu:
quelle
Wenn Sie sich in einer Aktivität befinden, nehmen Sie an, dass es nur eine Stammansicht gibt. Sie können diese so abrufen.
Sie können es dann in Ihre echte Klasse umwandeln
oder du könntest verwenden
Beachten Sie, dass dies die Aktionsleistenansicht enthält. Ihre Ansicht befindet sich unterhalb der Aktionsleistenansicht
quelle
Activity
Klasse gibt es keine solche Methode .Für diejenigen unter Ihnen, die die Datenbindungsbibliothek verwenden , verwenden Sie einfach Folgendes , um die Wurzel der aktuellen Aktivität zu ermitteln:
Und für Kotlin-Benutzer ist es noch einfacher:
quelle
Eine weitere Kotlin Extension-Lösung
Wenn die Ansicht Ihrer Aktivität in xml (ex
activity_root.xml
) deklariert ist , öffnen Sie die xml und weisen Sie der Stammansicht eine ID zu:Importieren Sie jetzt in Ihrer Klasse die Ansicht mit:
Sie können jetzt
root_activity
als Ansicht verwenden.quelle