调整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)
更大的控制。
答
我不知道webkitTextSizeAdjust
在非Safari /移动Safari浏览器以外的任何支持。
尝试WebSettings.setTextSize (WebSettings.TextSize t)
,而不是试图用JavaScript来做到这一点。
答
布赖恩·库利帮我这个......试试吧...
increaseFontButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
WebSettings settings = myWebView.getSettings();
settings.setTextZoom((int)(settings.getTextZoom() * 1.1));
}
}
谢谢,它的工作;) – anticafe 2011-12-21 04:56:58
在这里我的webview是适配器类如何使用'fontSizePlus'和'fontSi*us'谢谢 – NagarjunaReddy 2013-03-22 11:41:55
非常感谢您的解决方案:)它真的很有用。 – Programmer 2015-06-17 06:34:18