调整的Andr​​oid的WebView的字体大小 [英] Adjust font size of Android WebView

查看:770
本文介绍了调整的Andr​​oid的WebView的字体大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你如何调整一个Android 的WebView 的字体大小?下面似乎没有任何效果:

 私人无效fontSizePlus(){
    fontSize的=(fontSize的< FONT_SIZE_MAX)? fontSize的+ FONT_SIZE_INCREMENT:fontSize的;
    this.changeFontSize(fontSize的);
}

私人无效fontSizeMinus(){
    fontSize的=(fontSize的> FONT_SIZE_MIN)? fontSize的 -  FONT_SIZE_INCREMENT:fontSize的;
    this.changeFontSize(fontSize的);
}

私人无效changeFontSize(int值){
    字符串JS =document.getElementsByTagName('身体')[0] .style.webkitTextSizeAdjust ='+价值+%;;
    mWebView.loadUrl(JavaScript的:(函数(){+ JS +})());
}
 

的WebView 和常量被初始化如下:

 私人最终静态INT FONT_SIZE_DEFAULT = 100;
私人最终静态INT FONT_SIZE_MIN = 50;
私人最终静态INT FONT_SIZE_MAX = 150;
私人最终静态INT FONT_SIZE_INCREMENT = 5;
私人诠释fontSize的= FONT_SIZE_DEFAULT;

私人的WebView mWebView;

@覆盖
保护无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.index);
    mWebView =(web视图)findViewById(R.id.webview);
    mWebView.getSettings()setJavaScriptEnabled(真)。
    mWebView.loadUrl(文件:///android_asset/index.htm);
}
 

解决方案

@抢的回答和评论我指出了正确的方向。

首先确保所有字体大小是相对于默认字体大小。如果使用绝对值下不会对这些元素的工作。

然后:

  @覆盖
保护无效的onCreate(包savedInstanceState){
    ...
    mWebView =(web视图)findViewById(R.id.webview);
    fontSize的= mWebView.getSettings()getDefaultFontSize()。
    ...
}

私人无效fontSizePlus(){
    字号++;
    this.changeFontSize(fontSize的);
}

私人无效fontSizeMinus(){
    字体大小 - ;
    this.changeFontSize(fontSize的);
}

私人无效changeFontSize(int值){
    mWebView.getSettings()setDefaultFontSize(值)。
}
 

通过更改默认字体大小的值都相对字体大小进行相应调整。这使您远大于控 WebSettings.setTextSize(WebSettings.TextSize T)

How do you adjust the font size of an Android WebView? The following appears to have no effect:

private void fontSizePlus() {
    fontSize = (fontSize < FONT_SIZE_MAX) ? fontSize + FONT_SIZE_INCREMENT : fontSize;
    this.changeFontSize(fontSize);
}

private void fontSizeMinus() {
    fontSize = (fontSize > FONT_SIZE_MIN) ? fontSize - FONT_SIZE_INCREMENT : fontSize;
    this.changeFontSize(fontSize);
}

private void changeFontSize(int value) {
    String js = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '" + value + "%';";
    mWebView.loadUrl("javascript:(function() { " + js +  " })()");  
}

Where the WebView and constants have been initialized as follows:

private final static int FONT_SIZE_DEFAULT = 100;
private final static int FONT_SIZE_MIN = 50;
private final static int FONT_SIZE_MAX = 150;
private final static int FONT_SIZE_INCREMENT = 5;
private int fontSize = FONT_SIZE_DEFAULT;

private WebView mWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.index);
    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("file:///android_asset/index.htm");
}

解决方案

@rob's answer and comment pointed me in the right direction.

First make sure that all font sizes are relative to the default font size. If you use absolute values the following will not work on those elements.

Then:

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    mWebView = (WebView) findViewById(R.id.webview);
    fontSize = mWebView.getSettings().getDefaultFontSize();
    ...
}

private void fontSizePlus() {
    fontSize++;
    this.changeFontSize(fontSize);
}

private void fontSizeMinus() {
    fontSize--;
    this.changeFontSize(fontSize);
}

private void changeFontSize(int value) {
    mWebView.getSettings().setDefaultFontSize(value);
}

By changing the value of the default font size all relative font sizes are adjusted accordingly. This gives you much greater control than WebSettings.setTextSize (WebSettings.TextSize t).

这篇关于调整的Andr​​oid的WebView的字体大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆