针对不同屏幕和操作系统版本的Android WebView文本缩放

针对不同屏幕和操作系统版本的Android WebView文本缩放,android,android-layout,zooming,android-webview,Android,Android Layout,Zooming,Android Webview,大家早上好,我有一个应用程序,可以在智能手机和平板电脑上使用。 当它在平板电脑上运行时,我想缩放我的网络视图的文本,以允许用户更好地阅读文本,并尽可能填充所有空白 这是我用来做这件事的代码: //Webview Zoom if( UIUtils.isTablet(getActivity())) { if(UIUtils.isICS()) { webView.getSettings().setTextZ

大家早上好,我有一个应用程序,可以在智能手机和平板电脑上使用。 当它在平板电脑上运行时,我想缩放我的网络视图的文本,以允许用户更好地阅读文本,并尽可能填充所有空白

这是我用来做这件事的代码:

//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] );
                }
            }
//Webview缩放
if(UIUtils.isTablet(getActivity())){
if(UIUtils.isICS()){
webView.getSettings().setTextZoom(130);
}否则{
int currentTextSizeIndex=lyricsView.getSettings().getTextSize().ordinal();
如果(currentTextSizeIndex+1
因此,我检查我是否在平板电脑上,并检查用户使用的操作系统版本。 事实上,从API级别14开始,我可以使用它来设置页面的文本缩放百分比(默认为100)。这个解决方案的可伸缩性要高得多,因为例如,我可以给用户增加或减少文本的能力,因为他们需要+10%或-10%的步长

在API级别14之前,我必须使用枚举作为参数(默认正常)。 TextSize是用于指定文本大小的枚举。最小值为50%较小值为75%正常值为100%较大值为150%最大值为200%

因此,我只能使用这5个组件,而且它的可扩展性不强(但这是将此功能提供给90%没有ICS:D的手机的唯一方法)

问题是
webView.getSettings().setTextSize(TextSize.large)会以不同的方式运行,这真的不好

目前我正在测试三星Galaxy标签和KindleFire。 以下是GSMArena的技术规格:

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

大小600 x 1024像素,7.0英寸(~170 ppi像素密度)

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

大小1024x600像素,7.0英寸(~170 ppi像素密度)

正如你所看到的,他们有相同的分辨率,英寸和ppi! 现在,我将向您展示这些设备的两个屏幕截图(相同的webview内容),以便您理解我所说的内容

KindleFire:

Galaxy选项卡:

在文本大小较大的Galaxy选项卡上,文本太大,无法看到。所以对于这类设备,默认情况下最好显示一个普通文本(如果放得更大,让用户选择)。但是我怎么知道哪一个是最好看的默认文本大小呢?因为对于Galaxy Tab来说“正常”是可以的,对于Kindle Fire来说太小了,而对于Galaxy Tab来说“大”是太大了,但对于Kindle来说却是完美的。我只在这两台设备上做了一个测试,但我必须支持所有的平板电脑,我必须找到一些参数,在设备上的差异,以便说:好的,在这个设备上,因为分辨率很小,我会把它放得更大/正常,而不是在这个设备上,因为它的结果更大,我可以把它放得更大(有点)


你曾经面对过这个问题吗?我该如何解决它呢?

看看这个:,视口应该帮助你看看这个:,视口应该帮助你

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

您正在显示的是您的内容还是其他人的内容?这可能并不完全相关,但如果是您的,您可以使用CSS3控制webview中的内容外观,但我也不知道您的目标设备上对CSS3有什么支持。

我们在应用程序中看到了类似的问题(一般来说,不只是在webview中)

原来的三星Galaxy标签错误地将自己报告为大hdpi。其他屏幕尺寸(7英寸)和分辨率(1024x600)相同的平板电脑正确地报告自己为大mdpi。这些“正确”的平板电脑包括KindleFire、Nook平板电脑,甚至三星Galaxy Tab 2!我希望HTC传单也能这样做,但还没有尝试过

在一篇博客文章中,谷歌声称这是三星做出的设计决定:

(搜索“惊喜”)

在另一个案例中,他们声称这是一个错误:

(搜索“有趣”)

不管怎样,最初的Galaxy选项卡都是一个例外,不应该允许这种情况再次发生

我建议您选择在火上看起来最好的产品,因为除了最初的Galaxy标签外,这对所有7英寸平板电脑都很有效。如果你能让它看起来也可以接受,那么这是一个不错的奖励


希望有帮助

我们在应用程序中也看到了类似的问题(一般来说,不仅仅是在网络视图中)

原来的三星Galaxy标签错误地将自己报告为大hdpi。其他屏幕尺寸(7英寸)和分辨率(1024x600)相同的平板电脑正确地报告自己为大mdpi。这些“正确”的平板电脑包括KindleFire、Nook平板电脑,甚至三星Galaxy Tab 2!我希望HTC传单也能这样做,但还没有尝试过

在一篇博客文章中,谷歌声称这是三星做出的设计决定:

(搜索“惊喜”)

在另一个案例中,他们声称这是一个错误:

(搜索“有趣”)

不管怎样,最初的Galaxy选项卡都是一个例外,不应该允许这种情况再次发生

我建议您选择在火上看起来最好的产品,因为除了最初的Galaxy标签外,这对所有7英寸平板电脑都很有效。如果你能让它看起来也可以接受,那么这是一个不错的奖励


希望有帮助

内容是我的是的,但我的设备范围