2010-11-15 132 views
5

如何調整Android 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 + " })()"); 
} 

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"); 
} 

回答

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); 
} 

通過改變默認字體大小的值的所有相對字體大小被相應的調整。這給你比WebSettings.setTextSize (WebSettings.TextSize t)更大的控制。

+0

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

+0

在這裏我的webview是適配器類如何使用'fontSizePlus'和'fontSizeMinus'謝謝 – NagarjunaReddy 2013-03-22 11:41:55

+0

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

4

我不知道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

0

布賴恩·庫利幫我這個......試試吧...

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