hpi*_*que 5 javascript android webkit font-size webview
如何调整Android的字体大小WebView?以下似乎没有效果:
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 + " })()");
}
Run Code Online (Sandbox Code Playgroud)
其中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");
}
Run Code Online (Sandbox Code Playgroud)
hpi*_*que 21
@ 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 fontSizeMinus() {
fontSize--;
this.changeFontSize(fontSize);
}
private void changeFontSize(int value) {
mWebView.getSettings().setDefaultFontSize(value);
}
Run Code Online (Sandbox Code Playgroud)
通过更改默认字体大小的值,可以相应地调整所有相对字体大小.这给你提供了更大的控制力WebSettings.setTextSize (WebSettings.TextSize t).