2017-08-08 71 views
9

Mam aplikację, która zasadniczo ładuje stronę internetową, aby wyświetlić te informacje. Na stronie mam element iframe, który ładuje kalendarz wydarzeń.Skalowanie czcionek Android WebView iFrame

Wyświetlanie strony internetowej (przez Chrome) na komputerze, kalendarz wydarzeń wygląda dokładnie tak, jak powinien (tak, wiem, że czcionka jest śmiesznie mała).

Wyświetlanie strony na karcie FireTV za pośrednictwem aplikacji na Androida, zmienia rozmiar czcionki w ramach iFrame (kalendarz wydarzeń).

Zauważyłem, że z FireTV, gdy rozdzielczość jest 1920x1080 rzeczywista rozdzielczość ekranu jest 960x540 (co skalowanie w dół do przeglądania spowoduje ten sam efekt) @see Screen Size and Resolution

obraz w Chrome (wyświetla poprawnie) Image in Chrome (displays correctly) FireTV WebView (niepoprawne) FireTV (incorrect) mam również przeczytać na Font-Zwiększenie, która jest początkowo, co myślałem, że problem był, ale wyeliminowały że żadna z technik „wyłączyć” to działało (html * {max-height: 99999999px} , itp.)

Mam wrażenie, że problem polega na tym, jak nazywam WebView w aplikacji na Androida i na zastosowanych ustawieniach. Jestem prawie pewien, że brakuje mi czegoś, co naprawiłoby ten problem. Oto co mam na ustawieniach Webview:

mWebView = (WebView) findViewById(R.id.activity_main_webview); 
WebSettings webSettings = mWebView.getSettings(); 

webSettings.setJavaScriptEnabled(true); 
webSettings.setMediaPlaybackRequiresUserGesture(false); 
webSettings.setUseWideViewPort(true); 
webSettings.setLoadWithOverviewMode(true); 
webSettings.setSupportZoom(true); 
webSettings.setDefaultFontSize(12); 
mWebView.setInitialScale(1); 

EDIT 1: Dobra, zorientowali się, że to nie tylko iFrame który jest skalowanie w górę, ale jest cała zawartość na FireTV (to widocznie cecha). Ich rozdzielczość wyświetlania (dp) wynosi 960x540. Wygląda na to, że nie ma możliwości robienia rzeczy 1920 x 1080, ale kiedy wyświetlam element iframe za pomocą aplikacji "Mój Rise Player" Rise Vision, wszystko wygląda normalnie.

W jaki sposób znaleźli sposób na wyświetlenie 1920x1080 w FireTV?

Jeśli ktoś z zespołu deweloperów Rise Vision chciałby skomentować i wskazać mi właściwy kierunek, byłbym bardzo wdzięczny!

+1

Czy próbowałeś użyć webSettings.setTextZoom(), aby uniknąć automatycznego skalowania? – altskop

+0

@altskop To zdecydowanie krok w dobrym kierunku. Dodałem to i ustawiłem na 40 (tak jak na razie na stałe zakodowane do testowania) i poprawiłem część tekstu, ale nie całość. Poprawiony tekst wykorzystywał vh dla rozmiaru czcionki. Tekst, w którym zastosowano proste piksele, nie został poprawiony i nadal był skalowany. Jakieś pomysły na to? – Michael

Odpowiedz

2

Rozwiązanie tego było dość proste. Potrzebne mi było ustawić te wartości do 100

mWebView.getSettings.setTextZoom(100); 
mWebView.setInitialScale(100); 

Dzięki @altskop za wprowadzenie mnie w dobrym kierunku

Dla tych, którzy zastanawiają się, resztę kodu, proszę bardzo:

WebView mWebView = (WebView) findViewById(R.id.activity_main_webview); 
WebSettings webSettings = mWebView.getSettings(); 

mWebView.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     Log.d(TAG, "Finished Loading."); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
}); 

webSettings.setJavaScriptEnabled(true); 
webSettings.setMediaPlaybackRequiresUserGesture(false); 
webSettings.setTextZoom(100); 

mWebView.setInitialScale(100); 
mWebView.getSettings().setDomStorageEnabled(true); 
mWebView.loadUrl("http://your.url.com");