Android: View.measure (int, int) всегда хочет быть (0,0) - PullRequest
1 голос
/ 15 октября 2010

У меня есть WebView, который я добавил в группу представлений:

webView = new WebView(context);
addView(webView, ViewGroup.LayoutParams.WRAP_CONTENT);

Это живет в конструкторе моей группы просмотра.

Тогда на макете, я хочу сделать это:

webView.measure(View.MeasureSpec.makeMeasureSpec(getWidth(),View.MeasureSpec.EXACTLY),  
                View.MeasureSpec.makeMeasureSpec(3000, View.MeasureSpec.AT_MOST));

К сожалению, если я не укажу EXACTLY, webView.getMeasuredHeight () всегда возвращает 0. Что я хочу сделать, так это определить, насколько большим должно быть веб-представление, чтобы я мог размещать вокруг него другие элементы. Я указал, что хочу, чтобы веб-просмотр был достаточно большим, чтобы охватить его контент, и предоставил достаточно места. Так почему же это все еще 0?

Спасибо

Обновление 1

Когда webView получает запрос measure (), он должен знать, сколько у него данных, нет?

webView = new WebView(context);
webView.loadData("<html></html>","text/html", "utf-8");
addView(webView, new ViewGroup.LayoutParams(getWidth(), 1000));

Ответы [ 2 ]

4 голосов
/ 15 октября 2010

Это:

addView(webView, ViewGroup.LayoutParams.WRAP_CONTENT);

очень неправильно.Второй параметр, когда передается как int, является индексом представления внутри родителя.Это не делает то, что вы думаете, что делает.Вместо этого вы должны передать новый экземпляр LayoutParams.

Возможно, ваша проблема в том, что вы выполняете измерение до того, как WebView успел загрузить документ HTML.Вы измеряете с ограничением AT_MOST 3000, и 0 определенно соблюдает эти ограничения.WebView просто говорит вам, что его содержание сейчас имеет высоту 0.

1 голос
/ 15 октября 2010

Я предполагаю, что вы измеряете вид в onCreate().Вид еще не нарисован.Вам нужно подождать некоторое время после того, как представление будет нарисовано, прежде чем вы сможете его измерить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...