Android 7 WebView mit wrap_content

8

Ich habe ein WebView mit android:layout_height="wrap_content" in einem ScrollView . Vor Android 7 führte dies dazu, dass WebView die Größe des lokalen HTML-Inhalts änderte, den ich mit loadData eingestellt hatte. Bei meinem Nexus 5X mit Android 7 scheint die WebView-Höhe jedoch unzuverlässig zu sein, manchmal zeigt sie nur Teile der ersten Textzeile, manchmal gibt es eine große Lücke am Ende des Inhalts.
Ich denke, es könnte daran liegen, dass Google Chrome für WebViews verwendet, die mit Nougat beginnen. Hat jemand eine Erklärung oder Lösung / Workaround für dieses Problem?

Es kann auch wichtig sein, dass die Ansichten in den Zellen von RecyclerView enthalten sind.

    
Alf 05.10.2016, 15:46
quelle

2 Antworten

1

Die Verwendung von WebView zum Anzeigen von Inhalten in einem RecyclerView ist ein wenig riskant und nicht so effizient. Sie haben keine Ahnung, wie es in verschiedenen Geräten funktioniert!

Ich empfehle, Ihre Lösung mit TextView zu ändern und HTML-Inhalte mit diesem Befehl in formatierten Text umzuwandeln

%Vor%

Übrigens, das sind einige Anstrengungen, die ich mit WebView gemacht habe, um eine feste Größe zu erreichen, um einige Werbebanner anzuzeigen:

%Vor%     
Mohsen Mirhoseini 10.10.2016 09:51
quelle
1

Problemumgehung ist:

wartet, während die HTML-Seite geladen wird, und führen JS innerhalb der Seite aus, um die Inhaltshöhe zu erkennen und sie auf Höhe der WebView-Layout-Parameter zu setzen.

Es ist einfach, JS innerhalb der Seite auszuführen, navigieren Sie einfach zu URL wie

%Vor%

Um das Ergebnis an Java-Code zu übergeben, müssen Sie die Java-Java Script-Schnittstelle wie hier beschrieben Ссылка bereitstellen (JavaScript-Code an Android-Code binden)

Ihre URL zum Navigieren muss aussehen wie

%Vor%

Die myfunc wird aufgerufen und Sie erhalten die Höhe der Seite. Stellen Sie jetzt nur die Höhe auf WebView-Höhe ein.

    
Nik 10.10.2016 09:53
quelle