Макет веб-просмотра Android -когда устанавливать положение?

У меня есть следующий XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/rl"
    android:background="@color/red"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <WebView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:layout_width="10dp"
        android:layout_height="10dp" />
</RelativeLayout>

Когда я вызываю:

view.layout(50, 50, 1024 - 50, 600 - 50);

из onCreate ()и onStart (), это не имеет никакого эффекта. Но когда я добавляю тот же вызов в shouldOverrideKeyEvent ()и нажимаю клавишу, все работает. Я думаю, это потому, что мои настройки переопределяются настройками XML. Итак, вопрос :в том, когда я должен вызывать layout ()как можно скорее, но после android :layout _width="10dp" и android :layout _height="10dp" уже применяются.

ОБНОВЛЕНИЕ

Я использую решение blessenm.

private class LayoutListener implements OnGlobalLayoutListener
{
    public void onGlobalLayout()
    {
        Display display = getWindowManager().getDefaultDisplay();
        int screenWidth = display.getWidth();
        int screenHeight = display.getHeight();

        // Workaround for a 'fill_parent' bug on my tablet (Kindle Fire).
        _WebView.layout(0, 0, screenWidth, screenHeight);
        _WebView.loadUrl("http://192.168.1.2");
        //_Layout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
    }
}

Если я закомментирую removeGlobalOnLayoutListener (), он перестанет работать. Отладчик показывает, что он вызывается дважды, поэтому я предполагаю, что второй вызов фактически устанавливает только размер. Итак, я решил не удалять прослушиватель (, если он вызывается 2 раза, это не убивает производительность ). Это казалось нормальным, пока я не понял, что оно вызывается всякий раз, когда я нажимаю на постоянный нижний бар -,вызывая появление панели инструментов. И так как я загружаю сайт после настройки макета, он каждый раз перезагружается. И я должен загрузить сайт только тогда, когда размер представления правильный, потому что сервер отправляет контент, специально оптимизированный для заданного размера.

Поэтому я не могу оставить слушателя и должен его удалить. Но когда? Просто сосчитать до 2? Будет ли он работать на всех устройствах/версиях Android? Почему для второго звонка работает, а для первого нет?

С уважением,

0
задан noober 22 April 2012 в 14:31
поделиться