Was ist der Unterschied zwischen addView und addViewInLayout?

7

Ich habe einige Widgets mit addView und manchmal addViewInLayout gesehen.

Was ist der Unterschied zwischen ihnen? Was passiert, wenn ich das eine durch das andere ersetze?

Soll ich beim Layout ein Flag behalten und "addViewInLayout" oder "addView" entsprechend verwenden?

Danke.

BR, Henry

ps. Weitere Tags hinzufügen: removeview, removeviewinlayout

    
Henry 07.05.2013, 04:17
quelle

3 Antworten

15

Es ist normalerweise eine schlechte Idee, addView in onLayout aufzurufen, weil addView intern eine requestLayout auslöst, die schließlich onLayout aufruft. Sie landen also ein Layout aus, während Sie sich in der Mitte eines Layouts befinden.

addViewInLayout ist eine "sicherere" Version von addView für den Fall, dass Sie wirklich eine neue Ansicht in onLayout hinzufügen müssen. Es löst grundsätzlich keinen Layout-Durchlauf aus (intern ruft requestLayout nicht auf).

Sehen Sie dieses Video (von Android-Ingenieur) für weitere Details: Ссылка

    
numan salati 20.06.2013, 06:25
quelle
5

addViewInLayout

Fügt während des Layouts eine Ansicht hinzu. Dies ist nützlich, wenn Sie in Ihrer onLayout () -Methode weitere Ansichten hinzufügen müssen (z. B. die Listenansicht). Wenn der Index negativ ist, bedeutet dies, dass er am Ende der Liste steht.

addView

Weisen Sie die übergebenen LayoutParams der übergebenen Ansicht zu und fügen Sie die Ansicht dem Fenster hinzu.

* Beachten Sie, dass addView von ViewManager implementiert wird, einer Schnittstelle, mit der Sie untergeordnete Ansichten zu einer Aktivität hinzufügen und daraus entfernen können. So können Sie ViewGroup zur Laufzeit Ansichten hinzufügen (DYNAMISCH). Beachten Sie außerdem, dass addViewInLayout eine geschützte Methode von ViewGroup ist. Wenn Sie also eine benutzerdefinierte Ansichtsgruppe erstellen, können Sie addViewInLayout() in onLayout() method aufrufen.

Weitere Informationen finden Sie

    
Arun C 07.05.2013 04:54
quelle
1

zum Beispiel: Wir haben ein Layout (mLayout) und Sie möchten 2 Ansichten (view1, view2) in dieses Layout einfügen. Also gibt es 2 Möglichkeiten (das gleiche)

Fall1: Sie verwenden einfach folgenden Befehl

%Vor%

In diesem Fall ist die Funktion onLayout () nicht wichtig. es ist einfacher Quellcode.

Fall2: Kompliziert, aber bessere Leistung

%Vor%

Ich habe keine Zeit, es zu testen. Jeder kann mir helfen, es klarer zu machen.

    
HungNM2 13.01.2015 17:30
quelle

Tags und Links