2012-04-02 58 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英寸平板電腦都適用。如果你能讓它看起來也可以接受,那麼這是一個不錯的獎勵。

希望有幫助!

相關問題