2013-02-07 228 views
1

我想爲不同類聲明屬性某些屬性在不同類中具有相同名稱但類型不同。這裏是我的代碼:聲明具有相同名稱但不同類型的屬性

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="net.firouz.mastergardner.IntEditView"> 
     <attr name="caption" format="string" /> 
     <attr name="min_val" format="integer" /> 
     <attr name="max_val" format="integer" /> 
    </declare-styleable> 
    <declare-styleable name="net.firouz.mastergardner.FloatEditView"> 
     <attr name="min_val" format="float" /> 
     <attr name="max_val" format="float" /> 
    </declare-styleable>  
</resources> 

但是Eclipse抱怨屬性max_valmin_val已經定義。我怎樣才能解決這個問題。

謝謝 山姆

回答

1

this的發帖幫助下,我找到了更好的答案。 顯然屬性可以有多種格式,使以下代碼有效並可以爲我工作。

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr name="min_val" format="float|integer|reference" /> 
    <attr name="max_val" format="float|integer|reference" /> 
    <declare-styleable name="IntEditView"> 
     <attr name="Caption" format="string|reference" /> 
     <attr name="min_val" /> 
     <attr name="max_val" /> 
    </declare-styleable> 
    <declare-styleable name="FloatEditView"> 
     <attr name="min_val" /> 
     <attr name="max_val" /> 
    </declare-styleable>  
</resources> 

謝謝大家

1

直接添加您的屬性節點的孩子:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr name="min_val" format="float" /> 
    <attr name="max_val" format="float" /> 

    <declare-styleable name="net.firouz.mastergardner.IntEditView"> 
     <attr name="caption" format="string" /> 
     <attr name="min_val" /> 
     <attr name="max_val"/> 
    </declare-styleable> 

    <declare-styleable name="net.firouz.mastergardner.FloatEditView"> 
     <attr name="min_val" /> 
     <attr name="max_val"/> 
    </declare-styleable> 
</resources> 

否則你必須爲你的浮點和整數屬性使用不同的屬性名稱

+0

爲IntEditView我需要整數和FloatEditView我需要浮動。用你的方法都會浮動。 – Sam

3

你可以去用以下2種解決方案之一

<?xml version="1.0" encoding="utf-8"?> 
<attr name="min_val" format="float" /> 
<attr name="max_val" format="float" /> 
<resources> 
    <declare-styleable name="net.firouz.mastergardner.IntEditView"> 
     <attr name="caption" format="string" /> 
     <attr name="min_val" /> 
     <attr name="max_val" /> 
    </declare-styleable> 
    <declare-styleable name="net.firouz.mastergardner.FloatEditView"> 
     <attr name="min_val" /> 
     <attr name="max_val" /> 
    </declare-styleable>  
</resources> 

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="net.firouz.mastergardner.IntEditView"> 
     <attr name="caption" format="string" /> 
     <attr name="min_val_i" format="integer" /> 
     <attr name="max_val_i" format="integer" /> 
    </declare-styleable> 
    <declare-styleable name="net.firouz.mastergardner.FloatEditView"> 
     <attr name="min_val_f" format="float" /> 
     <attr name="max_val_f" format="float" /> 
    </declare-styleable>  
</resources> 

機器人僅產生一個類的所有屬性「R.attr」,並且如MIN_VAL和MAX_VAL已經定義爲整數蝕抱怨下一次它看到其聲明爲浮動。

+0

我認爲我必須採用第二種方法,因爲在第一種方法中,這兩種方法都變成了浮動,這不是我正在尋找的方法。 – Sam

+0

偉大的,如果這回答你的問題,請標記它 – mkso

+0

只是出於好奇。看起來,android預先將可修改的名稱歸屬於屬性名稱。在我的情況下,它產生net_firouz_mastergardner_IntEditView_min_val和net_firouz_mastergardner_IntEditView_max_val和net_firouz_mastergardner_FloatEditView_min_val和net_firouz_mastergardner_FloatEditView_max_val這是不一樣的事情。這可能是一個錯誤? – Sam

相關問題