2014-03-19 42 views
-2

我試圖通過使用此代碼來使edittext的頁邊空白,但是當我將此代碼的產品作爲頁邊距時,頁邊距佔用的區域比dip值。我知道這一點,因爲當我把160作爲DIP_Value時,保證金只佔用了屏幕的一部分,而不是全部。我將如何解決這個問題?Android dip轉換不起作用

int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, DIP_Value , getResources().getDisplayMetrics()); 
RelativeLayout.LayoutParams textbox = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
textbox.setMargins(px, 0, 0, 0); 
+0

「當我把160作爲DIP_Value,保證金只佔用屏幕的一部分而不是整個東西」 - 它應該佔用一英寸,而不是「整個東西」。你正確理解「dip」嗎? – 323go

+0

是不是整個屏幕160下降? – user3435542

+0

不會。您正在混淆dpi和dip。 Android參考分辨率爲160dpi =每英寸160點。所以160次驟降(=密度獨立像素)應該在* 1英寸左右測量*。如果您的設備屏幕實際上具有240 dpi的分辨率,那麼寬度爲160dip的小部件仍然*寬*一英寸,但實際上佔用240像素。 – 323go

回答

0

...當我把160作爲DIP_Value保證金只花了一部分的 屏幕,而不是整個事情。

不,它應該佔用一英寸,而不是「整個東西」。你似乎很困惑dpidip。 Android參考分辨率爲160dpi =每英寸160點。因此,s(=密度獨立像素)應該測量一英寸左右。如果您的設備的屏幕實際上具有240 dpi的分辨率,那麼寬度爲160dip的小部件的寬度仍將爲1英寸左右,但實際上會佔用240像素。

dip允許您專注於物理尺寸而不是密度。您的5英寸手機或10英寸平板電腦可能具有1920x1080的屏幕;如果您有一個160dip方形的小部件,那麼這兩個設備上的面積都是1平方英寸。這可以幫助您保持UI元素足夠大以便觸摸。您可以對所有屏幕尺寸使用相同的佈局,但您可能希望爲屏幕largexlarge設置不同的佈局,以提供更多信息(並使其看起來不太稀疏)。