2013-01-10 19 views
2

我知道這是一個簡單的問題,所以希望它不會對任何人造成麻煩。XML和Java之間的常量值

我怎樣才能在我的項目中有一個固定的float值,我可以從View的XML和.java文件中訪問?

我試過設置在我View的資源文件的浮點值這樣:

<attr name="cornerRadius" format="float">15.0dp</attr> 

我認爲這就是它應該怎麼做,但我只是用直覺做的。我真的很難在這個問題上的谷歌。

現在,在Java中訪問它,我已經試過這樣:

float myFloat = getContext().obtainStyledAttributes(attrs, R.styleable.MyView).getFloat(R.styleable.MyView_cornerRadius, 0.0f); 

這是我扔了,因爲它沒有得到正確的值,而是我通過在函數的值。爲什麼我將float值傳遞給這個函數?必須有不同的選擇。

現在,其中最大的問題是我在XML訪問它。我已經試過這樣:

<corners android:radius="@attrs_my_view/cornerRadius"/> 

我也試過這樣:

<corners android:radius="@float/cornerRadius"/> 

,但無濟於事。

也許這一切都是完全錯誤的,但我不知道如何在谷歌搜索這個,因爲我不知道它叫什麼。它就像根據其含義在字典中查找單詞。它不是一個好時機。

+1

有關定義自定義屬性的信息,請參閱http://stackoverflow.com/questions/3441396/defining-custom-attrs。我希望這有幫助。 –

+0

@代碼大師是的!這是非常有用的,儘管如此,我仍然被TypedArray中的getFloat(int,float)方法拋出。 – RileyE

+0

對於它的價值,我發現通過谷歌搜索「attr android」鏈接。谷歌搜索不必很複雜;-)如果您需要進一步澄清,也可以隨意編輯您的問題或發佈一個新的問題。 –

回答

0

您可以創建一個XML文件來包含您的常量。這聽起來像一個標準存儲在dimens.xml文件中的維度。將其放置在res/values文件夾中。

所以,你可能有一個文件(名爲dimens.xml),在它的下面:

<resources> 
    <dimen name="cornerRadius">15dp</dimen> 

</resources> 

然後你就可以使用正常的R.class引用它(即R.dimen.cornerRadius ) - 您可以從XML或Java中引用它。

+0

維度是一個浮點值和一個度量單位,而不僅僅是一個浮點值。 – CommonsWare

+0

我在這裏通常使用DP值(即180dp)。不知道這將如何與浮動工作(你可以爲我清除 - 我會糾正答案) - 或者你可以編輯它? – Booger

+0

同樣,維度是一個浮點值和一個度量單位(例如'15.3dp')。我知道無法將純浮點值表示爲維度資源。我也沒有看到記錄的「float」資源類型,雖然有可能存在並且沒有記錄。 – CommonsWare

相關問題