2013-04-11 9 views
32

自分のプロジェクトでカスタムコンポーネントを使用したいと思います。下のような列挙型属性に追加したいのですが、どうすればいいですか?カスタムXML属性としてEnumを使用する

<com.abb.abbcustomcompanents.buttons.AbbButton 
     android:id="@+id/abbBtn1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:Type="How can i use enum here" 
     /> 

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="abbButton"> 
     <attr name="Type" format="enum"/> 
     <attr name="onAction" format="string"/> 
    </declare-styleable> 
</resources> 

ありがとうございます!

+1

これをチェックしてください。http://stackoverflow.com/a/15231645/1329126 –

+0

ありがとうございました。あなたが答えとしてそれを書くなら、私はそれを受け入れたものとしてマークすることができます。 – Talha

答えて

54

例:このような

<attr name="myProperty" format="enum"> 
     <enum name="None" value="0"/> 
     <enum name="One" value="1"/> 
     <enum name="Two" value="2"/> 
     <enum name="Three" value="3"/> 
</attr> 

用途:

<YourCustomView 
    ... 
    app:myProperty="One"/> 

リファレンス

https://stackoverflow.com/a/15231645/1329126

+0

これは私のカスタムビューでどのように取得できますか? –

+0

@ NeonWargeもう少し遅いことは知っていますが、将来的にはユースケースを追加しました –

2

XMLに関する事項内部注文、少なくとも日食します。 declare-styleableの上(またはその内側)のenumを以下のように定義します。

<attr name="quality"> 
    <enum name="Good" value="1" /> 
    <enum name="Better" value="2" /> 
    <enum name="Best" value="3" /> 
</attr> 

<declare-styleable name="SquareView"> 
    <attr name="quality" /> 
</declare-styleable> 

<declare-styleable name="CircleView"> 
    <attr name="quality" /> 
</declare-styleable> 

私は非常に長い列挙型でしたので、読みやすくするためにXMLの最後に配置しました。それは正しく解析されますが、デザインモードで値を拒否します。

関連する問題