Android: Ansicht.Maßnahme(int,int) will immer sein (0,0)
Ich habe eine WebView, die ich Hinzugefügt habe, eine Ansicht, Gruppe:
webView = new WebView(context);
addView(webView, ViewGroup.LayoutParams.WRAP_CONTENT);
Dieser lebt in meiner viewgroup Konstruktor.
Dann auf layout, dass ich dies tun wollen:
webView.measure(View.MeasureSpec.makeMeasureSpec(getWidth(),View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(3000, View.MeasureSpec.AT_MOST));
Leider, es sei denn, ich angeben EXACTLY
, die webView.getMeasuredHeight() gibt immer 0
. Was ich tun möchte, ist festzustellen, wie groß die webview sein will, so dass ich kann liegen andere Elemente um ihn herum. Ich habe angegeben, dass ich will, dass die webview groß genug sein, um umfassen Inhalt es ist, und ich zur Verfügung gestellt großzügiges Raumangebot. Also warum ist es noch immer 0?
Dank
Update 1
Durch die Zeit, die webView wird von measure () - Anfrage, es sollte wissen, wie viel Daten es hat, nicht?
webView = new WebView(context);
webView.loadData("<html></html>","text/html", "utf-8");
addView(webView, new ViewGroup.LayoutParams(getWidth(), 1000));
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese:
ist sehr falsch. Der zweite parameter, der, wenn übergeben, wie ein int, ist der index der anzeigen innerhalb des übergeordneten. Dies nicht zu tun, was Sie denken, es tut. Sie passieren soll, eine neue Instanz von
LayoutParams
statt.Dein problem ist wahrscheinlich, dass Sie eine Messung vor
WebView
hatte Zeit zum laden des HTML-Dokuments. Sie Messen mit der EinschränkungAT_MOST
3000, - und 0 jeden Fall Respekt, dass Einschränkungen. WebView ist nur sagen Sie, dass Ihr Inhalt hat eine Höhe von 0 für jetzt.Meine Vermutung ist, dass Sie die Messung der Blick in
onCreate()
. Die Ansicht ist noch nicht gezogen. Sie müssen warten, bis eine Zeit nach Sicht gezogen wird, bevor Sie es Messen.