WebView Text Zoom Problem in Android

8

Ich habe ein Dokument Leser Projekt in Android. Main Activity beinhaltet ein WebView. Die Texte lesen aus HTML. Im Menü "Top-Optionen" finden Sie eine Schaltfläche zum dynamischen Erhöhen der Textgröße (Text wird umbrochen). So weit so klar, aber wenn die Taste gedrückt wird, ist die Textgröße etwas erhöht, aber der gesamte Text wird auf dem Bildschirm nach unten verschoben und zweimal when die Taste gedrückt, erhöht sich die Textgröße und der gesamte Text wird wieder ein wenig nach unten verschoben. Diese Situation ist wirklich frustrierend für die Leser. Der Leser muss nach dem Drücken des Knopfes dorthin zurückkehren, wo er aufgehört hat, so dass der Leser den Leseort nicht verlieren sollte. Wie man dieses Problem löst?

  

Das Problem:

  

Wenn das Problem gelöst wurde:

  

HTML-Inhalt meiner WebView:

%Vor%     
ATES 26.03.2016, 13:34
quelle

3 Antworten

1

Ich schlage vor, die relative Bildlaufposition vor und nach der Schriftgrößenerhöhung zu verwenden, um zu berechnen, wo der Benutzer sein sollte. Dies kann in wenigen Schritten erfolgen:

  1. Bevor Sie die Schriftgröße ändern, speichern Sie die Bildlaufhöhe und Bildlaufposition der Textansicht. Bestimmen Sie das Verhältnis zwischen Scroll-Höhe und Scroll-Position (zwischen 0 und 1)
  2. Ändern Sie die Schriftgröße
  3. Messen Sie nach dem Rendern die neue Bildlaufhöhe
  4. Legen Sie die neue Bildlaufposition als neue Bildlaufhöhe mal altes Verhältnis fest.

Das relevante Snippet:

%Vor%

Sie können hier ein Beispiel ansehen: Ссылка

Ich muss zugeben, dass ich im Moment nicht in Android testen kann, aber ich glaube glaube, dass die allgemeine Richtung funktionieren sollte.

    
user3297291 13.04.2016 14:23
quelle
1

Meine Idee, Text auf dem Bildschirm zu behalten, besteht darin, einen Verweis auf jedes "Element" (p, div, img, usw.) auf einem bestimmten x,y -Punkt auf dem Bildschirm zu speichern, wobei die Schriftgröße und dann scrollen das Element zurück auf den Bildschirm.

Ich habe ein funktionierendes Codebeispiel erstellt, das in Android Webview funktioniert:

%Vor%

Hoffe das behebt Ihr Problem!

    
Aaron Gillion 12.04.2016 07:42
quelle
-1

Versuchen Sie Folgendes:

%Vor%     
Istiyak 11.04.2016 20:52
quelle