2013-01-16 6 views
5

Wszystko, co przeczytałem (PO ROKU już robiącą moją aplikację :() mówi coś w stylu "nigdy nie powinieneś używać WebView wewnątrz ScrollView!" Jest to zrozumiałe, ponieważ teoretycznie możesz mieć 2 przewijane rzeczy, które mogłyby sprawić dziwną użyteczność.WebView wewnątrz ScrollView wydaje się działać dobrze, ale ostrzeżenia nie używać - alternatywa?

Ale -

może to sprawia, że ​​dopuszczalne wykorzystanie nawet jeśli jest to technicznie źle

Czy - tak daleko, widziałem żadnych efektów niepożądanych Potem znowu, każdy WebView używam nie wymaga przewijania.? czy występują niepożądane efekty, których po prostu nie zauważam z powodu braku testów w konkretnej wersji?

Jeśli nie mogę korzystać z WebView w ScrollView, to jak mogę et poniżej układ (mój obecny app):

LinearLayout 
    ScrollView 
     LinearLayout 
      TextView //Title of article 
      TextView //Subtitle of article 
      RelativeLayout 
       ImageView //Large Image (clickable to gallery) 
       ImageView //"more photos icon" 
      WebView // a small horizontal ad 
      TextView // actual article text 
      WebView //embedded HTML code ranging from iframe to video...etc 
      WebView //embedded HTML code ranging from iframe to video...etc 
      WebView // a small horizontal ad 
      LinearLayout 
       TextView //DB-driven "similar articles" list 
      WebView //disqus comments 

Uwaga: Zdaję sobie sprawę, że to „źle” - ale tak używasz <center> tagów HTML, a ludzie nadal skutecznie z nich korzystać przez cały czas. Różnica polega na tym, że istnieje łatwa i lepsza alternatywa dla <center> - czy jest coś podobnego w tym scenariuszu w systemie Android? W pewien prosty sposób, aby uzyskać powyższe?

Odpowiedz

0

Nie używaj WebView. Reklamy, które możesz dołączyć do aplikacji lub użyć AdMob. Do wideo jest wideoView. Alternatywa dla komentarzy webview to make api (używając php [POST] i sql). Korzystanie z widoku internetowego nie jest obowiązkowe. Mam nadzieję, że pomogłem

+0

AdMob jest przeznaczony specjalnie dla Google - nie wyświetlamy reklam za ich pośrednictwem. Komentarze są przez Disqus, który ma kod HTML do zaimplementowania. Doceniam twój czas, ale nie wierzę, że to jest to, czego szukam. – Dave

4

Jest to zrozumiałe, ponieważ można teoretycznie mają 2 przewijania rzeczy, które pozwoliłoby na nieparzystej użyteczność.

Dokładniej, ScrollView jest głupi jak pudełko skał i zakłada, że ​​ma pełną kontrolę nad przewijaniem.

Potem znowu, każdy WebView używam nie wymaga przewijania

Dokładniej, nie wymaga przewijania na urządzeniach, które zostały przetestowane, a za treści, które masz przetestowany.

Na przykład wątki komentarzy DISQUS zwykle wymagają przewijania w przeglądarce komputerów stacjonarnych. Można sobie wyobrazić, że będą tam wątki z komentarzami, które będą wystarczająco długie, aby wymagać przewijania na urządzeniu mobilnym, chyba że istnieje możliwość użycia osadzonego DISQUS bez przewijania.

Jeśli nie mogę użyć WebView wewnątrz Scrollview, jak bym się poniżej układ (mojego obecnego app):

Pozbądź się wszystkiego i mieć jeden WebView z wygenerowanego kodu HTML zawartość zawierająca wszystkie rzeczy w aktualnej strukturze. IOW, rób to, co zrobiłbyś na stronie internetowej.

+0

Kiedy mam ImageViews, dość łatwo zrobić wykrywanie kliknięć ... jeśli to HTML, jak sobie z tym poradzę? – Dave

+0

(kod disqus, którego używam, wydaje się być wolny od zwoju, ponieważ jest wiele komentarzy i wciąż nie ma zwoju - chociaż nadal lubię pomysł użycia całego wygenerowanego kodu HTML - po prostu nie wiem o kilku rzeczach, takich jak kliknięcia obrazu ... etc) – Dave

+0

@Dave: "jeśli są HTML, jak mam sobie z tym poradzić?" - ummm ... Atrybuty onclick, wywołując obiekty Java wstrzykiwane przez 'addJavaScriptInterface()', byłyby tam, gdzie bym zaczął. – CommonsWare

0

Umieszczenie WebView w ScrollView będzie działać tak długo, jak WebView nie będzie przewracany wewnętrznie w tym samym kierunku co ScrollView.Dokonywanie WebView nie przewijać wewnętrznie może zostać osiągnięty w ciągu kilku sposobów:

  • height Webview użytkownika (zakładając Scrollview jest przewijane w pionie) jest WRAP_CONTENT,
  • Webview ma stały rozmiar i treść ma układ reaktywny która nigdy nie będzie większa niż rzutnia (alternatywnie można użyć "overflow: hidden").

Nie sądzę, aby powyższe podejścia dobrze się łączyły z powiększaniem palcami, więc lepiej tego nie włączać.

Powiązane problemy