2010-05-25 11 views
9

Mam witrynę internetową, która używa znacznika META w widoku ekranu, aby poinformować przeglądarki mobilne o wyświetlaniu treści(). Przeglądanie strony w przeglądarce Androida wygląda poprawnie (i iPhone itp.).Android WebView wydaje się ignorować informacje "rzutni" na stronach internetowych.

Po załadowaniu strony do składnika WebView w aplikacji Android, WebView ignoruje tag "VIEWPORT" i renderuje stronę w rozdzielczości "pełnej", która jest w tym przypadku powiększana.

Odpowiedz

22

Po partii eksperymentowania mam ustalone, że Android WebView nie będą posłuszni " ustawienie rzutni, jeśli rzeczywista strona wymusza szerokość szerszą niż ustawienie rzutni.

Na przykład ustawiłem okienko o wielkości 500 pikseli, ale element na mojej stronie wymusił szerokość 960 pikseli. Obszar wyświetlania nie był przestrzegany, ponieważ WebView odmówił ukrycia tej dodatkowej zawartości.

Wydaje się to oczywiste, gdy je piszę, ale musiałem poświęcić kilka dni na rozwiązanie tego problemu.

+0

To jest bardzo interesujące. Z pewnością dyrektywa metawysłowa powinna obowiązywać * przed obliczeniem początkowego renderowania strony? – Barney

1

Kolejnym błędem w implementacji niektórych telefonów z systemem Android jest fakt, że na przykład HTC Desire HD zignoruje TAG wizualizacji - user-scale = no completly.

+0

Otrzymuję ten sam wynik z moim HTC Incredible S. Próbowałem każdej sztuczki w książce i nie zmieni się: znacznik widoku jest całkowicie ignorowany. – aeldron

9

Dokumenty mówią w linku w najlepszej odpowiedzi, że możesz określić za pomocą metatagu, jak urządzenie powinno reagować na rozmiar Twojej aplikacji internetowej w porównaniu do ekranu. Poniższy tag wykonane Android telefon respektować rozmiar rzutni mojej aplikacji internetowej:

<meta name="viewport" content="target-densitydpi=high-dpi" /> 
+0

Rozwiąż mój problem z Androidem, nie pomniejszając "szerokości urządzenia". Dzięki :) – BurninLeo

+0

Najlepszą odpowiedź według mnie, ponieważ niektórzy z nas programistów starają się dopasować dostarczone nam strony, kodowane przez nieprofesjonalistę. : P –

9

spróbować użyć tej metody klasy WebSetting

setUseWideViewPort (boolean use) 

Używam tego powiedzieć Android webview rozważyć moje „rzutni” tag

+0

+1 to jest ważne - od dokumentów _ "Pobiera informację, czy WebView obsługuje metatag HTML" viewport ", czy korzysta z szerokiej rzutni." _ – Dori

+0

To działa dla mnie. Zauważyłem jednak, że nawet jeśli ustawiono wartość false, znacznik rzutni jest nadal przetwarzany, ponieważ kiedy zmieniam go na wartość "value =" width = 100% ", kod HTML jest również wyświetlany poprawnie. –

-1

Użyj tego:

<meta name="viewport" content="width=320, user-scalable=no, target-densitydpi=low-dpi" /> 

teraz Android WebView i przeglądarka dostosowuje się do ustawień okna roboczego.

Uff, to wymagało wielu poprawek, aby uzyskać prawo. Jezu.

0

Potwierdzam tylko Twój problem. W narzędziu do śledzenia Androida znajduje się open issue. Proszę, oddaj mu głos/gwiazdkę, jeśli masz na to wpływ.

1

Link w zaakceptowanej odpowiedzi i this pomoże zrozumieć widok na Androida.

W moim scenariuszu stałej szerokości jest używana, rozwiązaniem jest:

settings.setUseWideViewPort(true) 
settings.setLoadWithOverviewMode(true) 
0

Jedyną rzeczą, która pracowała dla mnie było

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, minimum-scale=1.0, shrink-to-fit=no" /> 

ale specjalnie dodając maximum-scale=1.0, minimum-scale=1.0 do już istniejącego tagu pomogło. W moim konkretnym przypadku nie chciałem dać użytkownikowi możliwości powiększania/pomniejszania, więc YMMV.

Powiązane problemy