如何在Android WebView中更改字体大小?

41

你如何手动更改webview的字体大小?例如,当页面在webview中加载时,字体大小为24pt。这对于我的Android屏幕来说太大了。我研究了"websettings",但似乎两者没有关联。

谢谢

5个回答

105

我终于找到了它:-

WebSettings webSettings = webView.getSettings();

无论是setTextSize还是

webSettings.setTextSize(WebSettings.TextSize.SMALLEST);

这个也可以工作:

webSettings.setDefaultFontSize(10);

这会起作用吗,即使我已经在 HTML 中指定了 WebView 指向的文本的字体大小? - Zeba
10
webSettings.setTextSize(WebSettings.TextSize.SMALLEST)被弃用了。 - Tobrun
当通过Cordova构建应用程序时,我该如何做到这一点? - Lucas

40

现在似乎更倾向于使用不被弃用的方式来改变文本缩放比例,就像这样:

WebSettings settings = mWebView.getSettings();
settings.setTextZoom(90); // where 90 is 90%; default value is ... 100

19

当我想让用户在WebView更改文本大小/缩放时,我使用的方法如下:

private WebView mWebView;

// init web view and stuff like that ...


private void textSmaller() {

    WebSettings settings = mWebView.getSettings();
    settings.setTextZoom(settings.getTextZoom() - 10);
}

private void textBigger() {

    WebSettings settings = mWebView.getSettings();
    settings.setTextZoom(settings.getTextZoom() + 10);
}

Actionbar 项目被点击时,我调用 textSmaller()textBigger() 来改变文本大小。


7

我使用Javascript来完成这些事情,因为它几乎总是有效的。即使在你的HTML中使用了CSS文件。

mWebView.loadUrl("javascript:(document.body.style.backgroundColor ='red');");
mWebView.loadUrl("javascript:(document.body.style.color ='yellow');");
mWebView.loadUrl("javascript:(document.body.style.fontSize ='20pt');");

当然,您需要根据自己的需求更改尺寸和颜色。

1
在网站中使用“pt”没有意义。而且这个答案在loadUrl()之前漏掉了mWebView.。此外,加载这行代码不会改变字体大小,但会在屏幕上显示字体大小... - Raptor
请记得将 setJavaScriptEnabled 设置为 true - dees91

1
如果您想动态地增加或减小WebView的字体大小,请使用以下代码行:
WebView mWebView;
int fontSize;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mWebView = findViewById(R.id.webview);
    mWebView.loadUrl("file:///android_asset/sample.html");
    // enable / disable javascript
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setSupportZoom(true);
    mWebView.getSettings().setBuiltInZoomControls(true);
    mWebView.getSettings().setDisplayZoomControls(true);
    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);
}

public void Inc(View view) {
    fontSizePlus();
}

public void Dec(View view) {
    fontSizeMinus();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接