早上好,我有一款应用程序可以在智能手机和平板电脑上使用。 当它在平板电脑上运行时,我想放大我的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:
显示
类型TFT电容式触摸屏,16M色
尺寸600×1024个像素,7.0英寸(〜170 PPI像素密度)
显示
类型IPS TFT电容式触摸屏,16M色
尺寸1024×600像素,7.0英寸(〜170 PPI像素密度)
正如你可以看到它们具有相同的分辨率,英寸和PPI! 现在,我将向您展示2个截屏(相同的webview内容),以便您了解我正在谈论的内容。
KindleFire:
的Galaxy Tab:
在与TEXTSIZE大文本Galaxy Tab的是太多的大,这是ulgy看到的。因此,对于这种设备,默认情况下显示的是正常文本更好(并且让用户选择是否放大)。但是,我怎么能知道哪个是最好的默认textSize显示?由于NORMAL标准适用于Galaxy Tab,对于Kindle Fire而言太小,而LARGE对于Galaxy标签来说太大了,但是对于Kindle来说是完美的。我只在这两款设备上进行测试,但我必须支持所有平板电脑,才能找到某种参数,设备中的差异可以说:因为分辨率很小,所以在此设备上可以使用。我会放大/正常,而不是在这一个,因为它更大的解析我可以把它放大(种)。
你有没有遇到过这个问题?我该如何解决它?
内容是我的是,但我的设备范围非常大。 Android 2.1的所有设备(智能手机,平板电脑,电视等)。我不想用CSS3来控制,因为正如我所说的,我想给用户增加/减小字体大小的能力。我试图找到的是该文本大小的最佳默认值 – StErMi 2012-04-02 21:36:21
我不明白为什么增加/减小字体大小是不可能与CSS,但你知道更好;) – durilka 2012-04-02 21:54:37
不,我不是说这一点。我认为,如果我找到一个本地代码的答案,它会更好,而不是操纵css js – StErMi 2012-04-03 07:47:30