2012-04-02 81 views
1

早上好,我有一款应用程序可以在智能手机和平板电脑上使用。 当它在平板电脑上运行时,我想放大我的webview文本以允许用户更好地阅读文本并在可能的情况下填充所有空白区域。针对不同屏幕和操作系统版本的Android WebView文本缩放

这是我使用这样做把戏代码:

//Webview Zoom 
      if(UIUtils.isTablet(getActivity())) { 
       if(UIUtils.isICS()) { 
        webView.getSettings().setTextZoom(130); 
       } else { 
        int currentTextSizeIndex = lyricsView.getSettings().getTextSize().ordinal(); 
        if (currentTextSizeIndex+1 < lyricsView.getSettings().getTextSize().values().length) 
         webView.getSettings().setTextSize(lyricsView.getSettings().getTextSize().values()[currentTextSizeIndex+1]); 
       } 
      } 

所以我检查,如果我是在平板电脑和我检查哪个操作系统版本用户使用。 来自API Level 14的Infact我可以使用setTextZoom,它允许我设置页面的文本缩放百分比(默认为100)。这个解决方案的可扩展性要大得多,因为我可以给用户提供增加或减少文本的能力,只要他们想用+10或-10%的步长就可以。

在API级别14之前,我必须使用setTextSize,它使用enum作为参数(默认为NORMAL)。 TextSize是用于指定文本大小的枚举。 SMALLEST是50%SMALLER是75%NORMAL是100%LARGER是150%LARGEST是200%

因此,我只能使用这5个costants,但它不具备可扩展性(但它是将此功能设置为90 %没有ICS的电话:D)。

问题是,当我在不同的平板电脑上显示文本视图时,webView.getSettings().setTextSize(TextSize.LARGER);以不同的方式起作用,并且它确实不正常。

目前我正在测试三星Galaxy Tab和Kindle Fire。 这些是技术规格从GSMArena:

Samsung P1000 Galaxy Tab

显示
类型TFT电容式触摸屏,16M色

尺寸600×1024个像素,7.0英寸(〜170 PPI像素密度)

Amazon Kindle Fire

显示
类型IPS TFT电容式触摸屏,16M色

尺寸1024×600像素,7.0英寸(〜170 PPI像素密度)

正如你可以看到它们具有相同的分辨率,英寸和PPI! 现在,我将向您展示2个截屏(相同的webview内容),以便您了解我正在谈论的内容。

KindleFire:Kindle Fire Webview with webView.getSettings().setTextSize(TextSize.LARGER)

的Galaxy Tab:Samsung Galaxy Tab Webview with webView.getSettings().setTextSize(TextSize.LARGER)

在与TEXTSIZE大文本Galaxy Tab的是太多的大,这是ulgy看到的。因此,对于这种设备,默认情况下显示的是正常文本更好(并且让用户选择是否放大)。但是,我怎么能知道哪个是最好的默认textSize显示?由于NORMAL标准适用于Galaxy Tab,对于Kindle Fire而言太小,而LAR​​GE对于Galaxy标签来说太大了,但是对于Kindle来说是完美的。我只在这两款设备上进行测试,但我必须支持所有平板电脑,才能找到某种参数,设备中的差异可以说:因为分辨率很小,所以在此设备上可以使用。我会放大/正常,而不是在这一个,因为它更大的解析我可以把它放大(种)。

你有没有遇到过这个问题?我该如何解决它?

回答

0

这是你的还是别人你正在展示人的内容?它可能不完全相关,但如果它是你的,你可以用CSS3控制webview中的东西的外观,但是我不知道你的目标设备上有什么CSS3支持。

+0

内容是我的是,但我的设备范围非常大。 Android 2.1的所有设备(智能手机,平板电脑,电视等)。我不想用CSS3来控制,因为正如我所说的,我想给用户增加/减小字体大小的能力。我试图找到的是该文本大小的最佳默认值 – StErMi 2012-04-02 21:36:21

+0

我不明白为什么增加/减小字体大小是不可能与CSS,但你知道更好;) – durilka 2012-04-02 21:54:37

+0

不,我不是说这一点。我认为,如果我找到一个本地代码的答案,它会更好,而不是操纵css js – StErMi 2012-04-03 07:47:30

5

我们已经在我们的应用程序中看到类似的问题(通常,不仅仅是在WebViews中)。

原来的三星Galaxy Tab不正确地报告自己是大hdpi。具有相同屏幕尺寸(7英寸)和分辨率(1024x600)的其他平板电脑可以正确报告自己为大型mdpi。这些“正确”的平板电脑包括Kindle Fire,Nook平板电脑,甚至是三星Galaxy Tab 2!我希望HTC Flyer也能做到这一点,但还没有尝试过。

在一个博客帖子谷歌宣称,这是由三星进行设计决定:

在另一个

http://android-developers.blogspot.co.uk/2010/09/screen-geometry-fun.html(搜索“惊喜”),他们声称这是一个错误:

http://android-developers.blogspot.co.uk/2011/07/new-tools-for-managing-screen-sizes.html (搜索“有趣”)。

无论哪种方式,最初的Galaxy Tab都是一个例外,不应该允许再次发生。

我建议在Fire上使用任何看起来最好的产品,因为除了最初的Galaxy Tab之外,对于所有7英寸平板电脑都适用。如果你能让它看起来也可以接受,那么这是一个不错的奖励。

希望有帮助!

相关问题