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_valと不平を言います。min_valどうすればこれを修正できますか。

ありがとうサム

4

3 に答える 3

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>

androidは、すべての属性「R.attr」に対して1つのクラスのみを生成し、min_valとmax_valはすでに整数の日食として定義されているため、次にその宣言がfloatとして表示されたときに文句を言います。

于 2013-02-07T22:20:07.280 に答える
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>

それ以外の場合は、浮動小数点属性と整数属性に異なる属性名を使用する必要があります

于 2013-02-07T22:15:24.267 に答える
1

この投稿の助けを借りて、より良い答えを見つけました。どうやら、属性には複数の形式があり、次のコードが有効になり、私にとってはうまくいく可能性があります。

<?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>

みんなありがとう

于 2013-02-08T15:50:52.280 に答える