2013-01-16 6 views
5

Tutto ciò che ho letto (DOPO aver già fatto la mia app :() dice qualcosa come "non dovresti mai usare una WebView all'interno di una ScrollView!". Questo è comprensibile perché potresti teoricamente avere 2 elementi di scorrimento che renderebbero strana usabilità.WebView all'interno di ScrollView sembra funzionare correttamente, ma gli avvisi da non utilizzare - alternativa?

Ma - finora, ho visto alcun effetto avverso Poi di nuovo, ogni WebView sto usando non richiede lo scorrimento -.? forse che lo rende accettabile l'uso anche se è tecnicamente sbagliato

Are ci sono effetti negativi che non sto notando alla mancanza di test su una versione specifica?

Se non riesco a utilizzare una WebView all'interno di una ScrollView, come farei io et il layout di seguito (il mio attuale 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 

Nota: mi rendo conto che è "sbagliato" - ma così stanno usando <center> tag in HTML, e la gente ancora utilizzare loro tutto il tempo in modo efficace. La differenza sembra essere che c'è un'alternativa facile e migliore a <center> - c'è qualcosa di simile in questo scenario in Android? Un modo un po 'semplice per ottenere quanto sopra?

risposta

0

Non utilizzare WebView. Annunci che puoi allegare all'applicazione o utilizzare AdMob. Per il video è VideoView. Alternativa ai commenti webview è make api (usando php [POST] e sql). L'uso della webview non è comlulico. Spero di aver aiutato

+0

Admob è specificamente per Google - non stiamo pubblicando annunci attraverso di loro. I commenti sono attraverso Disqus, che ha il codice HTML da implementare. Apprezzo il tuo tempo, ma non credo che questo sia quello che sto cercando. – Dave

4

Ciò è comprensibile perché in teoria si potrebbero avere 2 elementi di scorrimento che potrebbero rendere l'usabilità dispari.

In particolare, ScrollView è stupido come una scatola di rocce e presuppone che abbia il pieno controllo dello scorrimento.

Poi di nuovo, ogni WebView sto usando non richiede lo scorrimento

Più precisamente, non richiede lo scorrimento sui dispositivi che hai provato, e per il contenuto che si ha testato.

Ad esempio, i thread di commento DISQUS in genere richiedono lo scorrimento su un browser desktop. Si immagina che ci saranno thread di commento che saranno abbastanza lunghi da richiedere lo scorrimento su un dispositivo mobile, a meno che non ci sia un embargo DISQUS scroll-free che è possibile utilizzare.

Se non posso usare un WebView all'interno di uno ScrollView, come faccio a ottenere il layout di seguito (il mio attuale app):

sbarazzarsi di tutto e di avere un unico WebView, con HTML generato contenuto che contiene tutte le cose nella tua struttura attuale. IOW, fai ciò che vorresti fare in un sito Web.

+0

Quando ho ImageViews, è abbastanza facile fare il rilevamento dei clic ... se sono HTML, come gestirlo? – Dave

+0

(il codice di disqusito che sto usando sembra essere scroll-free, dato che ci sono molti molti commenti, e ancora nessun scroll - sebbene mi piaccia ancora l'idea di usare tutto l'HTML generato - non sono sicuro di alcune cose come i clic sull'immagine ... ecc.) – Dave

+0

@Dave: "se sono HTML, come gestirlo?" - ummm ... gli attributi 'onclick', chiamando agli oggetti Java iniettati tramite' addJavaScriptInterface() ', sarebbero i punti in cui iniziare. – CommonsWare

0

Posizionare la WebView in una ScrollView funzionerà fintanto che WebView non è scrollabile internamente nella stessa direzione di ScrollView.Portando il WebView non scorrere internamente può essere ottenuta in due modi:

  • del WebView altezza (supponendo che lo ScrollView è scorrevole verticalmente) è wrap_content,
  • WebView ha una dimensione fissa e il contenuto è la layout reattivo che non sarà mai più grande del viewport (in alternativa potrebbe essere usato "overflow: hidden").

Non credo che gli approcci di cui sopra si mescoleranno bene con lo zoom con pinch, quindi è meglio non abilitarlo.

Problemi correlati