У меня есть следующий 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? Почему для второго звонка работает, а для первого нет?
С уважением,