早上好,我有一款應用程序可以在智能手機和平板電腦上使用。 當它在平板電腦上運行時,我想放大我的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