2016-04-03 2 views
0

Korrigieren Sie mich im folgenden Code, wenn ich falsch liege, aber wir rufen den Inflator auf, von dem ich annehme, dass er eine statische Variable ist? Das wird das Layout, das wir übergeben, in einen View-Typ aufblasen oder konvertieren? Aber warum und was ist ein Container und warum geben wir einen wahren oder falschen Wert ein?In android Was ist Container und der boolesche Wert beim Aufblasen eines Layouts?

View view=inflator.inflate(R.layout.layout_name,container, false); 

Antwort

0

Container: die ViewGroup der Blick in eingefügt wird. Zum Beispiel, wenn dies ein Adapter für eine ListView ist, wird es die ListView. Wenn dies ein Fragment ist und Ihr Fragmentcontainer FrameLayout ist, wird dies FrameLayout sein. Dies ist nützlich für die Verwendung der LayoutParams des Containers, weil dies möglicherweise entscheidet, wie die Ansicht, die Sie erstellen, aussehen wird.

Boolean: Dieser Parameter heißt attachToRoot. Wenn es wahr ist, wird es nach dem Aufblasen einen addView() auf dem Container machen, so dass Sie nach dem Aufruf bereits im Container sind (und der Aufruf container.addView(view) wird dann abstürzen). In Adaptern und Fragmenten sollten Sie dies auf false verlassen, weil die Implementierung von diesen addView() für Sie aufrufen wird.

Auch here's the original documentation wenn ich irgendwo unklar war.

0

container ist die übergeordnete. Wenn Sie eine parent übergeben, wird es mit dem Elternteil aufgeblasen. Die ViewGroup, die hier als Teil der Parameter der inflate-Methode angefordert wurde, wird verwendet, um Styling auf höherer Ebene zu erben. Das Übergeben von null kann harmlos erscheinen, kann aber später ernsthafte Probleme für Ihre App verursachen. In diesem Fall ist die Ansicht alleine aufgebläht, und Sie könnten einige Designprobleme bemerken.

Und boolean Parameter entscheidet, ob die Ansicht zu übergeordneten verknüpft ist oder nicht.

boolean: Ob die überhöhte Hierarchie an den Root-Parameter angehängt werden soll? Wenn false, wird root nur verwendet, um die korrekte Unterklasse von LayoutParams für die Stammansicht im XML zu erstellen.

Read more.

+0

ok, also was ist ein Elternteil, und was ist ein Fall, in dem wir eine Ansicht an einen Elternteil anhängen möchten? – eli

+0

wie von @DanielZolnai erwähnt, "wenn dies ein Adapter für eine' ListView' ist, wird es die 'ListView'. Wenn dies ein' Fragment' ist und Ihr Fragmentcontainer 'FrameLayout' ist, wird es' FrameLayout'. " –

Verwandte Themen