Von dem, was ich verstehe, konvertiert der LayoutInflater XML in Ansichten. Aber wenn ich Buttons, TextViews oder andere Widgets im Code verwende, muss ich einfach findViewById() verwenden, ohne diese Views zuerst aufblasen zu müssen. Sind diese Ansichten automatisch aufgebläht? Wenn ja, wann werden die Ansichten automatisch aufgebläht und wann müssen Sie sie manuell aufblasen?Werden Ansichten automatisch aufgeblasen?
Antwort
Sie müssen nur eine XML-Layout aufzublasen, und dann werden alle viewgroups und Ansichten (Schaltflächen, Textview, EditText usw.) Wird automatisch angezeigt.
In einer Activity-Klasse hat die oncreate-Methode eine Zeile SetContentview(), die das XML-Layout aufbläht.
Sie blähen Ihre Ansichten manuell auf, wenn Sie Ihre Aktivität und XML manuell erstellen.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_activity);
}
Ein Activity
muss einen Anruf an setContentView(R.layout.<your_layout_here>)
in seiner onCreate
Methode enthalten. Dadurch wird das XML im angegebenen Layout in die Ansichtshierarchie für Activity
aufgebläht. Für eine Fragment
, überschreiben die onCreateView
Methode wie unten:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.<your_layout_here>, container, false);
}
Sobald Sie ein Layout (und alle seine Kinder View
s) aufgeblasen haben in der Ansichtshierarchie, können Sie dann findViewById(R.id.<your_view_id>)
einen Verweis auf die bekommen tatsächliche View
Objekt, das Sie in die Hierarchie aufgeblasen haben und damit spielen.
Wenige Dinge sind hier:
1.Ansicht für Ihre Aktivität (UI-Bildschirm), dass wird von setContentView() Methode.
2.Ansicht für eine bestimmte UI-Komponente z.B. Schaltfläche, die entweder in xml Ihrer activity_layout erstellt wird, oder Sie können separate XML-Layoutdatei für Ihre spezifische UI-Komponente aufblasen. Das beste Beispiel und Verwendung ist wie das Aufblasen einer XML-Layoutdatei für Ihren benutzerdefinierten Toast.
So, hier ist die Sache, die setContentView() und Aufblasen eines XML-Layout-Datei für eine separate Ansicht bezieht: Beide dieser ein Layout für Komponenten Ansicht und Ansicht, beide erzeugt eine binäre Ausgabe für Layout und verwenden Sie sie wie oben beschrieben.
- 1. Warum darf mein TableLayout nicht aufgeblasen werden?
- 2. Layout nicht aufgeblasen in android benutzerdefinierten Komponente
- 3. Layout Objekte Positionen Unterschied, wenn aufgeblasen
- 4. Erhalten Ressource-ID von welcher Ansicht wurde aufgeblasen
- 5. Zusätzliche Ansichten werden nicht gelöscht
- 6. Warum 'Ansichten' repliziert werden müssen?
- 7. zwei Ansichten mit derselben ID
- 8. Werden Vektoren automatisch skaliert?
- 9. versucht, Felder automatisch mit Hilfe von Django Ansichten
- 10. Oracle-Inline-Ansichten in Vim automatisch falten mit .vimrc
- 11. So registrieren Sie Ansichten automatisch in Xamarin.Forms mit Prism
- 12. Seltsames Verhalten in meiner Android App (Android 2.3.5) - Dinge werden falsch aufgeblasen
- 13. Sollen Dialoge automatisch geschlossen werden?
- 14. DB2-Werte werden automatisch abgeschnitten
- 15. Frame-Namen werden automatisch zugewiesen
- 16. Können Stoppwörter automatisch gefunden werden?
- 17. Werden Mongodb-Backups automatisch erstellt?
- 18. UserControl wird aufgeblasen, wenn es auf einem Formular platziert wird?
- 19. Interface Builder-Ansichten werden nicht angezeigt
- 20. Spielen! Framework - Ansichten werden nicht kompiliert?
- 21. Angular JS Mathml-Ansichten werden nicht verarbeitet
- 22. Wie werden Ansichten in Android zwischengespeichert?
- 23. Sollen ASP.NET MVC-Ansichten parametrisiert werden
- 24. Geschlossene Ansichten werden nicht in Eclipse entsorgt
- 25. Qt Creator Debugger Ansichten werden Disabled
- 26. Wie können Controller/Szenen mit wechselnden Ansichten richtig gehandhabt werden?
- 27. Wie überprüft man, ob ein viewStub bereits aufgeblasen ist?
- 28. SmtpClient nicht authentifizieren, wenn sie von web.config aufgeblasen
- 29. Regelmäßig die Ansichten ändern
- 30. Klassenbasierte Ansichten VS Funktionsbasierte Ansichten
Ihre grundlegende Frage ist: "Wann muss ich eine Ansicht manuell aufblasen, und wann ist es automatisch für mich erledigt?" Ankesh Kumar Jaisansaria gab eine gute Antwort. Schau auch hier: [Unterschied zwischen setcontentview und inflater] (http://stackoverflow.com/questions/17808177/difference-between-setcontentview-and-inflater). Lesen Sie diesen Thread schließlich: [Fragmente gegen Aktivitäten und Ansichten] (http://stackoverflow.com/questions/10478233/android-i-need-some-clarifications-of-fragments-vs-activities-and-views) – paulsm4
Inflate bedeutet einfach, von XML in tatsächliche View-Objekte zu übersetzen. findViewById sucht nur das aktuelle View-Objekt, um es zu manipulieren. –