Android 声明具有相同名称但不同类型的属性
我试图为不同的类声明属性。有些属性具有相同的名称,但在不同的类上具有不同的类型。这是我的密码:Android 声明具有相同名称但不同类型的属性,android,eclipse,android-custom-view,custom-view,Android,Eclipse,Android Custom View,Custom View,我试图为不同的类声明属性。有些属性具有相同的名称,但在不同的类上具有不同的类型。这是我的密码: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="net.firouz.mastergardner.IntEditView"> <attr name="caption" format="string" /> <
<?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\u val
和min\u val
。我怎样才能解决这个问题
多谢各位
Sam将属性直接添加为节点的子节点:
<?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>
否则,必须为浮点属性和整数属性使用不同的属性名称将属性直接添加为节点的子级:
<?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>
否则,您必须为浮点和整数属性使用不同的属性名称您可以使用以下两种解决方案之一
<?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>
或
android只为所有属性“R.attr”生成了一个类,因为min_val和max_val已经被定义为整数,所以下次它将其声明视为float。您可以使用以下两种解决方案之一
<?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>
或
android只为所有属性“R.attr”生成了一个类,因为min_val和max_val已经被定义为整数,所以下一次它将其声明视为float。在发布的帮助下,我找到了一个更好的答案。 显然,属性可以有多种格式,这使得下面的代码有效,可以为我工作
<?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>
谢谢大家通过发帖,我找到了一个更好的答案。 显然,属性可以有多种格式,这使得下面的代码有效,可以为我工作
<?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>
谢谢大家我想我必须采用第二种方法,因为在第一种方法中,两种方法都变成了浮点数,这不是我想要的。只是出于好奇。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,它们不是一回事。这可能是一个bug吗?我想我必须使用第二种方法,因为在第一种方法中,两个都变成了float,这不是我想要的。只是出于好奇。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,它们不是一回事。这可能是一个错误吗?对于IntEditView,我需要整数;对于FloatEditView,我需要浮点。对于IntEditView,我需要整数;对于FloatEditView,我需要浮点。使用您的方法,两者都将得到float。