Autore Topic: WebView & dimensioni contenuto  (Letto 606 volte)

Offline wlf

  • Utente normale
  • ***
  • Post: 367
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
WebView & dimensioni contenuto
« il: 16 Febbraio 2015, 17:50:24 CET »
0
Salve raga, ho una piccola webview, una sorta di banner, dalla quale visualizzo un link remoto, ma il contenuto è enorme rispetto alla mia strisciolina. E' possibile dire al contenuto di rimpicciolirsi per stare dentro alla mia webview? Ho trovato tutta una serie di metodi su Stackoverflow ma nessun funziona; suppongo che ci sia qualcosa che impedisce il resize del contenuto. :(

Offline wlf

  • Utente normale
  • ***
  • Post: 367
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:WebView & dimensioni contenuto & sfondo
« Risposta #1 il: 19 Febbraio 2015, 11:38:43 CET »
0
Altro problemino; se utilizzo nell'XML l'opzione  background
Codice (XML): [Seleziona]
android:background="@color/nero"viene tranquillamente ignorata, idem se lo faccio da codice con il .setBackgroundColor(). :(

In alternativa del background avevo pensato di ridimensionare la WebView in larghezza in base al contenuto, anche questa idea, con la wrap_content, sembra essere tranquillamente ignorata. :(

La WebView è un widget che mi sta dando molte soddisfazioni! ;)

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 765
  • Respect: +159
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:WebView & dimensioni contenuto
« Risposta #2 il: 19 Febbraio 2015, 15:46:46 CET »
+1
Ciao, ho affrontato gli stessi problemi.

Considera che se ridimensioni o cambi lo sfondo di una webview stai modificando il componente, non il contenuto, quindi entro certi limiti non serve a nulla per cambiare l'aspetto della pagina web mostrata.

Io ho risolto il problema della dimensione inviando alla pagina la dimensione del WebView e lasciando il compito alla pagina di ridimensionarsi adeguatamente in funzione dei parametri ricevuti (in pratica ho spostato il livello lato web).

Per il colore, se non ricordo male, ho dovuto specificare esplicitamente lo sfondo della pagina web trasparente in modo da lasciar vedere il colore della WebView - ma non sono sicuro che basti, ricontrollo il codice e ti faccio sapere meglio.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline wlf

  • Utente normale
  • ***
  • Post: 367
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:WebView & dimensioni contenuto
« Risposta #3 il: 19 Febbraio 2015, 16:28:02 CET »
0
Ciao, ho affrontato gli stessi problemi.

Fortunatamente non sono il solo a "cozzare" su questi problemi ... :)

Citazione
Considera che se ridimensioni o cambi lo sfondo di una webview stai modificando il componente, non il contenuto, quindi entro certi limiti non serve a nulla per cambiare l'aspetto della pagina web mostrata.

Infatti è quello che ho supposto anche io dopo aver tentato invano ad invertire la rotta. Lo stesso link se lo visualizzo da browser ho lo sfondo bianco, quindi convengo con quanto affermi! ;)

Citazione
Io ho risolto il problema della dimensione inviando alla pagina la dimensione del WebView e lasciando il compito alla pagina di ridimensionarsi adeguatamente in funzione dei parametri ricevuti (in pratica ho spostato il livello lato web).

Intendi dire che invii tramite una http POST le dimensioni della WebView e questa ti restituisce la pagina da visualizzare?
Nel mio caso ho fatto una WebView nel bottom dello schermo per far vedere delle pubblicità; l'altezza lo definita 53dp mentre la larghezza a priori non la conosco, dipende dallo schermo dello smartphone. Adesso il contenuto della WebView viene marginato a sx ed ho uno spazio bianco a dx (schermo FHD); io perlomeno gradirei che fosse centrato ed i bordi non siano bianchi, ma dello stesso colore dello sfondo.

Citazione
Per il colore, se non ricordo male, ho dovuto specificare esplicitamente lo sfondo della pagina web trasparente in modo da lasciar vedere il colore della WebView - ma non sono sicuro che basti, ricontrollo il codice e ti faccio sapere meglio.

Magari provo intanto in questa direzione; grazie! ;)

--- edit ---
Ho controllato il sorgente della pagina dal browser e mi dice già "background-color:transparent". :(
« Ultima modifica: 19 Febbraio 2015, 16:49:34 CET da wlf »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 765
  • Respect: +159
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:WebView & dimensioni contenuto
« Risposta #4 il: 19 Febbraio 2015, 17:11:22 CET »
+1
Per quanto riguarda le dimensioni le ho inviati via GET. Ad esempio per specificare una risoluzione di 100 x 150 ho messo nell'URL:

http://dominio.com/pagina.aspx?w=100&h=150

Per lo sfondo ho impostato lo sfondo della webview trasparente:

Codice (Java): [Seleziona]
webView.setBackgroundColor(Color.TRANSPARENT);
e nella pagina (che nel mio caso contiene una tabella) ho impostato lo sfondo di ogni cella trasparente con il seguente CSS

Codice: [Seleziona]
table.MainTable td {
    background-color: transparent;
}

Nota: tu non conosci la dimensione del dispositivo, ma questo non ti impedisce di impostare la larghezza della webview ad un valore predefinito, come fai per l'altezza.
Se ad esempio sai che le tue pubblicità sono 500x53 puoi fissare il tuo webview con queste dimensioni e centrarlo nello spazio disponibile, aggirando così ogni necessità di ridimensionare il contenuto della WV
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline wlf

  • Utente normale
  • ***
  • Post: 367
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:WebView & dimensioni contenuto
« Risposta #5 il: 19 Febbraio 2015, 18:40:50 CET »
0
Per quanto riguarda le dimensioni le ho inviati via GET. Ad esempio per specificare una risoluzione di 100 x 150 ho messo nell'URL:

Ok, nella GET o nella POST è comunque uguale. :)
Adesso il problema è capire che parametri mandare per le dimensioni ...

Citazione
Per lo sfondo ho impostato lo sfondo della webview trasparente:
Codice (Java): [Seleziona]
webView.setBackgroundColor(Color.TRANSPARENT);

Lo sfondo trasparente sembra piacergli di più che non il colore che avevo scelto ... :)

Citazione
Nota: tu non conosci la dimensione del dispositivo, ma questo non ti impedisce di impostare la larghezza della webview ad un valore predefinito, come fai per l'altezza.
Se ad esempio sai che le tue pubblicità sono 500x53 puoi fissare il tuo webview con queste dimensioni e centrarlo nello spazio disponibile, aggirando così ogni necessità di ridimensionare il contenuto della WV

Ok, ma impostando ad esempio layout_width a 320dp e layout_height a 53dp come larghezza su uno schermo FHD mi ritrovo due bordi ai lati, su un dispositivo WVGA (800X480) invece già sbordo. :(
Che rapporto hanno queste dimensioni con quelle della pagina HTML?

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 765
  • Respect: +159
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:WebView & dimensioni contenuto
« Risposta #6 il: 19 Febbraio 2015, 19:01:43 CET »
+1
Che rapporto hanno queste dimensioni con quelle della pagina HTML?

Questo potrebbe non essere banale.

Io sono andato a tentativi...
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline wlf

  • Utente normale
  • ***
  • Post: 367
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:WebView & dimensioni contenuto
« Risposta #7 il: 20 Febbraio 2015, 09:18:05 CET »
0
Questo potrebbe non essere banale.
Io sono andato a tentativi...

Da quello che ho capito io l'unica cosa "importante" è mantenere il rapporto altezza/larghezza per non deformare l'immagine. Farò dei test anche io provando a tentativi anche se con l'istruzione
Codice: [Seleziona]
webview.setInitialScale(100);sembrerebbe che l'immagine venga scalata in base all'altezza.


Offline wlf

  • Utente normale
  • ***
  • Post: 367
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:WebView & dimensioni contenuto
« Risposta #8 il: 23 Febbraio 2015, 18:37:12 CET »
0
Questo potrebbe non essere banale.
Io sono andato a tentativi...

I miei tentativi finora mi hanno molto scoraggiato! :(

Con uno smartphone con schermo FHD mando al server "&height=150&width=1080" ed la webview diventa perfetta a tutta larghezza e sta giusta nell'altezza predisposta come webview (50dp).
Ho quindi provato con uno smartphone con schermo HD; facendo una banale proporzione matematica

AltezzaFHD : LarghezzaFHD = AltezzaHD : LarghezzaHD
150 : 1080 = x : 720
150 * 720 / 180 = 100

Ho quindi inviato al server "&height=100&width=720"; peccato che la pagina HTML da visualizzare è più grossa della webview! :(
Andando a tentativi, per visualizzare correttamente il contenuto devo inviare "&height=50&width=360"; non ho la possibilità di testare velocemente cosa accade per un dispositivo qHD (540x960) o per altre definizioni, ma immagino che sia una sorta di lotteria. :(
Sembrerebbe dipendere anche dalla densità in dpi del dispositivo o devicepixelratio (?), oppure da qualche altro parametro "non identificato"! :)

Non sono riuscito ad individuare una tecnica per calcolare preventivamente i valori da inviare al server per ottenere una visualizzazione corretta. :(

Idee/suggerimenti in merito? :)

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 765
  • Respect: +159
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:WebView & dimensioni contenuto
« Risposta #9 il: 24 Febbraio 2015, 12:47:06 CET »
0
Considera che devi mantenere la coerenza.

Se le misure della pagina HTML sono in pixel, il dispositivo dovrebbe inviare la dimensione in pixel.

Se le misure della pagina sono proporzionali (em, pt), il dispositivo dovrebbe inviare la dimensione in DP.

Con la prima soluzione hai maggior controllo, con la seconda è più pratico creare le pagine.

Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline wlf

  • Utente normale
  • ***
  • Post: 367
  • Respect: +8
    • Mostra profilo
  • Dispositivo Android:
    Xperia
Re:WebView & dimensioni contenuto
« Risposta #10 il: 24 Febbraio 2015, 18:30:27 CET »
0
Considera che devi mantenere la coerenza.

Se le misure della pagina HTML sono in pixel, il dispositivo dovrebbe inviare la dimensione in pixel.

Se le misure della pagina sono proporzionali (em, pt), il dispositivo dovrebbe inviare la dimensione in DP.

Con la prima soluzione hai maggior controllo, con la seconda è più pratico creare le pagine.

Mi piacerebbe essere coerente, ma mandando le dimensioni in pixel per il FHD funziona ( "&height=150&width=1080") mente per l'HD devo mandare delle misure falsate per farlo funzionare ( "&height=50&width=360"), giusto la metà di quelle che avrei manadato ( "&height=100&width=720"). :(

Considerando che togliendo l'istruzione
Codice: [Seleziona]
webview.setInitialScale(100);l'immagini mi risultava sproporzionata, ho commentato l'istruzione di sopra, ho quindi appurato che le dimensioni che mandavo anche per l'HD funzionano con entrambe le definizioni video. Sembra che io non abbia bisogno di mandare in GET le dimensioni e che riesca a visualizzare la webview correttamente su definizioni diverse, ma mi riservo di controllare meglio su altre definizioni ...  ;)