2014-02-14 41 views
3

說我已經在佈局以下TextView引用在Android的XML佈局從類靜態字段

<TextView 
    android:id="@+id/txtLoginError" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="@dimen/sz_12dp" 
    android:gravity="center" 
    android:text="@string/foo" /> 

難道我改變@dimen/sz_12dp指向靜態字段在我的自定義類,例如:

public static class MyDimensions { 
    public static int topMarginInPixels = 99; // which would be referenced in some fashion like android:layout_marginTop="@class/MyDimensions.topMarginInPixels" 
} 

我基本上正在尋找一種方法來爲某些實驗「數據綁定」佈局元素;而不是加載視圖,然後在代碼中修改它(findview,setWeight等)我希望在創建期間查看從我的自定義類中獲取大小,就像從R.java中獲取大小一樣。

注:我知道支持多種屏幕的最佳實踐,PX & DP之間的差異,如何爲不同的屏幕尺寸提供不同的RES /值目錄,所以請響應只有當你知道你回答這個問題,而不是重複一下can be read on this link

+1

假設維度文件具有與字符串文件類似的行爲:http://stackoverflow.com/questions/2643949/can-i-use-a-static-variable-from-a-java-class-in-res -values-styles-xml – pedromss

+0

我真的不明白你想做什麼......從'dimens'文件獲取大小有什麼不對? – gunar

+0

@dimens的gunar大小在運行時是不可編輯的 – kape123

回答

2

這是不可能實現你所描述的,但如果你真的想要像素和像素,你可以很好地把px大小,而不是dp,無論是在XML或維度文件 - 但我想你知道已經。

編輯在運行時確實不能改變尺寸,但它甚至不應該;如果要在運行時爲視圖更改尺寸,請獲取其對象並設置其寬度,高度,邊距,填充或任何要更改的內容。

+0

是的,知道...我編輯了問題,以便我更好地解釋我基本上尋找「綁定」。謝謝。 – kape123

+0

@ kape123:更新了答案,它有幫助嗎? – gunar

+0

我知道我可以更改LayoutParam,但正如你可以在我的問題中看到的「而不是加載視圖,然後在代碼中修改它(findview,setWeight等),我希望在創建過程中查看像我這樣的自定義類的大小從R.java獲取「。無論如何忘了它......我會等待看看有人是否有一些瘋狂的解決方案,如果沒有,我會刪除這個問題,因爲我們只是重申每個人都知道的事情。 – kape123