2013-03-30 90 views
1

在我的应用程序中,我为字体定义为“18sp”。该字体大小在TextView(作为标题)和WebView(作为正文)中都使用。在一台mdpi设备上,两种字体看起来都是相同的大小;但是在nexus 10(xhdpi)上,TextView看起来正确,而WebView大小加倍。我设置文字大小使用Android WebView缩放字体大小

int fontSize = res.getDimensionPixelSize(R.dimen.textSize); 

然后在体内使用CSS设置字体的网页流量:

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

为什么文本大小翻番很明显 - 一个xhdpi设备上18SP来到36px - 但我很困惑,为什么这是由TextView而不是由WebView自动处理。我能想到几种方法来处理这个,但我不知道是哪个(如果有的话)的正确方法是:

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

任何想法?由于

回答

0

设定字体大小像这样的WebView

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

我知道如何设置大小,问题是以一种合理的方式获得大小。大小是在一个维度资源中定义的,所以我的xhdpi设备上的fontSize变量的值为36,这对于默认字体大小来说不是合适的大小。我需要在xhdpi和mdpi上获得18的大小,所以问题是从维度资源中获取该值的正确方法。 –

1

您可以使用JavaScript代码来改变的WebView风格fontSize的,的backgroundColor和字体颜色。它正在工作。

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