代码之家  ›  专栏  ›  技术社区  ›  hpique

调整Android WebView的字体大小

  •  5
  • hpique  · 技术社区  · 15 年前

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

    其中 网络视图 常量已初始化如下:

    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");
    }
    
    3 回复  |  直到 15 年前
        1
  •  21
  •   ceph3us    11 年前

    @罗布的回答和评论给我指明了正确的方向。

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

    然后:

    @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) .

        2
  •  4
  •   Praveenkumar    14 年前

    我不知道 webkitTextSizeAdjust 在safari/mobile safari以外的任何地方都支持。

    尝试 WebSettings.setTextSize (WebSettings.TextSize t)

    而不是用javascript来实现。

        3
  •  0
  •   Juan Mellado user183856    14 年前

    布莱恩·库利帮我做了这个…试试。。。

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