我正在尝试为不同的类声明属性,其中一些属性具有相同的名称,但在不同的类上具有不同的类型。这是我的代码:
<?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_val
和min_val
。我该如何解决这个问题。
谢谢 萨姆
答案 0 :(得分:3)
您可以选择以下任何一种解决方案
<?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>
android只为所有属性“R.attr”生成了一个类,并且min_val和max_val已被定义为整数eclipse,下次它将其声明视为float时抱怨。
答案 1 :(得分: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>
否则,您必须为float和integer属性使用不同的属性名称
答案 2 :(得分: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>
谢谢大家