2014-04-24 58 views
0

我正在研究(應該是)設備特定的應用(理論上始終在Nexus 7上使用,儘管它可能是該設備的任一版本)。許多視圖將包含文本和圖形的一些組合,以有意義的方式定位。如果我使用「sp」按照建議定義文本大小,並且用戶全局更改「文本大小」,則文本將被縮放,但圖形不會 - 完全破壞視覺呈現。Android:禁用文本縮放(保持與dp相同)?

我想用dp代替硬像素單元,因爲不同版本的Nexus 7具有不同的顯示密度。如果位置關係保持不變,如果有人改變主意並且應用程序在其他顯示器上運行,那也是很好的。 dp處理圖形,但是通過爲文本設置不同的度量單位,它可以讓用戶損壞整個演示文稿。

是否有辦法禁用可選應用於「sp」的縮放,以便圖形(用dp定義)和文本(用sp定義)之間的關係不會被破壞?坦率地說,我想用dp定義文本,但找不到使用代碼的方式(沒有一個TypedValue常量支持它)。

謝謝!

+0

您是否動態創建視圖?我認爲你可以在XML中使用dp作爲文本大小,但這不是最佳做法。不是100% – zgc7009

+0

是的,視圖是在代碼中創建的,可以在執行過程中更改。這就是爲什麼我包含了關於TypedValue的註釋,因爲這是您將單位指定給TextView.setTextSize()的原因。 – AndroidNewbie

+0

我想到了這一點,但我不知道他們是否必須:) – zgc7009

回答

1

如果我使用「sp」按照建議定義文本大小,並且用戶全局更改「文本大小」,文本將被縮放,但圖形不會 - 完全破壞視覺表示。

用戶控制的字體縮放在桌面GUI中已經存在了很長時間,並且在瀏覽器中以用戶控制的字體縮放的形式出現在Web設計中。也許你可能會考慮學習如何處理文本大小的變化,這是無數開發者在你之前所做的。

坦率地說,我想用dp定義文本,但無法找到使用代碼的方式(沒有一個TypedValue常量似乎支持它)。

dp也縮寫爲dip並且代表密度獨立的像素。相應的TypedValue is COMPLEX_UNIT_DIP

+0

是的,我知道它是如何工作的網頁和類似的。但這是一個集成的圖形+文本環境。一個比喻是汽車的儀表板顯示。你將如何「處理文字大小的變化」?如果數字/字母改變大小,它會如何看待?舉一個例子,考慮一下speedo或者tach附近的數字是否增加了3倍;它們相對於測量儀上的刻度線的位置將失敗。但是,您可能希望使其具有動態性,以適應不同的測量單位和/或全量程範圍。你不能擁有預製剪貼畫來預測每一種可能性。 – AndroidNewbie

+0

有關COMPLEX_UNIT_DIP的提示非常有用,謝謝。我會調查一下。 – AndroidNewbie

+0

@AndroidNewbie:「他們相對於量表上的刻度線的位置將失敗」 - 有才華的程序員將標籤固定在刻度線上。 – CommonsWare

相關問題