2013-02-07 231 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

相关问题