2013-03-01 38 views
3

我想在我的編程佈局中使用我的dimens.xml文件中的某些預定義維度。Android:在編程佈局中使用預定義維度參數

因此,舉例來說,在我的dimens.xml文件我有:

<dimen name="margin1">40dip</dimen> 
<dimen name="margin2">40dip</dimen> 

然後在我的綱領性的TextView我:

RelativeLayout.LayoutParams lpMargin = new RelativeLayout.LayoutParams(R.dimen.margin1, R.dimen.margin2); 

應用版圖參數我TextView的結果在巨大的看法。

我已經發現了這個問題。如果我打印出來:

Log.e("Metrics", "margin width = " + String.valueOf(R.dimen.margin1)); 

......它給出了巨大的價值:margin width = 2131034112。弄亂它的東西是單位,「dip」。

所以我的問題是:什麼是正確的方式來指定尺寸沒有單位調用編程?如果這是不可能的,我可以改變R.dimen.margin1,以便我可以將它用作編程式佈局參數嗎?

編輯:這不是單位搞亂它 - 它是返回內部ID! (由於ianhanniballake下面說,我需要打電話getResources().getDimension(R.dimen.margin1))。

回答

13

使用

getResources().getDimension(R.dimen.margin1) 

getResources().getDimensionPixelSize(R.dimen.margin1) 

您的代碼返回分配給 'R.dimen.margin1',而不是你在XML文件中指定的值的內部ID。

+0

好抓!謝謝!這解決了問題。 – lynvie 2013-03-01 03:07:45

+0

@lynvie也許你應該繼續並「接受」這個答案。 – 2013-03-01 03:13:41