2012-06-06 21 views
6

我有2片:大小不同的2個設備,即使我使用 「DP」

1三星的Android 3.0

DisplayMetrics {density=1.0, width=600, height=976, 
scaledDensity=1.0, xdpi=161.55031, ydpi=155.51021} 

1低成本設備,安卓2.3.3

DisplayMetrics {density=1.0, width=480, height=800, 
scaledDensity=1.0, xdpi=160, ydpi=160.42105} 

如果我對每個屏幕尺寸使用不同的佈局,那麼兩個設備都表示它們是long-long和mdpi,所以我無法通過使用佈局文件夾名稱來區分它們......問題是:

我使用TextView和textSize =「20dp」

在第一個設備中,文本寬度是屏幕的一半,在第二個設備中更大(屏幕寬度的80%)。爲什麼?我期望如果我使用dp(而不是px),兩個設備都以相同的方式顯示文本。我也試圖與SP,但沒有任何變化......

(我用的TextView作爲例子,我有同樣的問題,在佈局中的所有元素:按鈕大小,...)

我會嘗試使用佈局文件夾名稱,如「layout-w600dp」或Android 3.2中引入的其他內容,但事實並非如此。

我知道我可以通過代碼onLayout(變化元件尺寸),但我不想這樣做...

什麼建議嗎?

更新

我解決我的問題,使用主題佈局:Activate a specific dimens.xml at runtime

+0

我有2個相似的硬件確切的問題實現畫面的50%。樣式是否解決了文本大小和圖像的問題?如果兩個設備都不能被刪除,你怎麼知道應該選擇哪種佈局 – Snake

+0

你怎麼能說2個設備是不可區分的?你有沒有試過看密度和分辨率? DisplayMetrics都一樣嗎? –

+0

我有兩個設備顯示顯示指標。兩者都與xdpi,ydpi中的小差異類似。當我說他們是一樣的我的意思是他們都是中等規模的大屏幕尺寸的設備。然而,圖像尺寸/按鈕尺寸不同 – Snake

回答

3

android documentation on Dimention說這

的DP到像素的比率將與屏幕密度的變化,但不一定是正比例

所以它是完全確定你所看到的

可以使用的LinearLayout weigth..Refer this

+1

在我的情況下密度似乎是兩個設備相同。我的需求是在這兩種設備上以完全相同的方式顯示文本,調整佈局權重是一種解決方案,但對於這種情況並非如此有用:如果我使用屏幕寬度爲50%的佈局,則會在第一個設備文本中顯示在一行中,在第二個設備文本中顯示爲2行... –

相關問題