调整Android WebView的字体大小

调整Android WebView的字体大小

问题描述:

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

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

private void fontSi*us() { 
    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 + " })()"); 
} 

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

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的回答和评论指出了我的正确方向。

首先确保所有字体大小都是相对于默认字体大小。如果您使用绝对值,则以下内容不适用于这些元素。

然后:

@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 fontSi*us() { 
    fontSize--; 
    this.changeFontSize(fontSize); 
} 

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

通过改变默认字体大小的值的所有相对字体大小被相应的调整。这给你比WebSettings.setTextSize (WebSettings.TextSize t)更大的控制。

+0

谢谢,它的工作;) – anticafe 2011-12-21 04:56:58

+0

在这里我的webview是适配器类如何使用'fontSizePlus'和'fontSi*us'谢谢 – NagarjunaReddy 2013-03-22 11:41:55

+0

非常感谢您的解决方案:)它真的很有用。 – Programmer 2015-06-17 06:34:18

我不知道webkitTextSizeAdjust在非Safari /移动Safari浏览器以外的任何支持。

尝试WebSettings.setTextSize (WebSettings.TextSize t)

,而不是试图用JavaScript来做到这一点。

+0

这似乎是这个问题,是的。不幸的是,WebSettings.TextSize只有5个可能的值,我觉得它太有限制了。这是WebView为此问题提供的最佳选择吗? – hpique 2010-11-15 20:56:01

+1

那么,总是有简单的旧CSS。也就是说,调整body元素的fontSize等。 – rob 2010-11-15 21:12:01

+0

+1您的评论指出我正确的方向。很快就会发布解决方案。 – hpique 2010-11-16 10:49:57

布赖恩·库利帮我这个......试试吧...

increaseFontButton.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     WebSettings settings = myWebView.getSettings(); 
     settings.setTextZoom((int)(settings.getTextZoom() * 1.1)); 
    } 
}