【问题标题】:Android WebView scaled font sizeAndroid WebView 缩放字体大小
【发布时间】:2013-03-20 19:50:41
【问题描述】:

在我的应用程序中,我有一个定义为“18sp”的字体尺寸。此字体大小用于 TextView(作为标题)和 WebView(作为正文)。在 mdpi 设备上,两种字体看起来大小相同;但是在 nexus 10 (xhdpi) 上,TextView 看起来正确,而 WebView 大小翻了一番。我正在使用

在 webview 上设置文本大小
int fontSize = res.getDimensionPixelSize(R.dimen.textSize);

然后在正文中使用 css 设置字体:

<body style='font-size: " + fontSize + "px'>

很明显为什么文本大小加倍 - xhdpi 设备上的 18sp 变成 36px - 但我很困惑为什么这是由 TextView 而不是由 WebView 自动处理的。我可以想出几种方法来处理这个问题,但我不知道哪种方法(如果有的话)是正确的:

  • mdpi 和 xhdpi 设备的不同字体大小
  • 将 WebView 的默认缩放设置为 100 / displayMetrics.scaledDensity
  • 将字体大小设为绝对整数(例如 18sp 等于 18)并将字体大小设置为该数字。

有什么想法吗?谢谢

【问题讨论】:

    标签: android android-webview font-size


    【解决方案1】:

    您可以使用 JavaScript 代码更改字体大小、背景颜色和字体颜色的 WebView 样式。它正在工作。

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

    【讨论】:

      【解决方案2】:

      在 webview 中设置这样的字体大小

      WebSettings settings = webview.getSettings();
      settings.setDefaultFontSize(10);
      

      【讨论】:

      • 我知道如何设置大小,问题在于以一种有意义的方式获取大小。大小在dimens 资源中定义,因此我在xhdpi 设备上的fontSize 变量为36,这不是默认字体大小的正确大小。我需要在 xhdpi 和 mdpi 上获得 18 的大小,所以问题是从 dimens 资源中获取该值的正确方法。
      猜你喜欢
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 2023-03-22
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多