2013-04-11 29 views
32

Tôi muốn sử dụng các thành phần tùy chỉnh trong dự án của mình và tôi muốn thêm nó vào các thuộc tính enum như dưới đây, làm cách nào tôi có thể làm điều đó?Sử dụng Enums làm thuộc tính XML tùy chỉnh

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

Cảm ơn bạn!

+1

kiểm tra http://stackoverflow.com/a/15231645/1329126 –

+0

Cảm ơn câu trả lời có thể chấp nhận được! nếu bạn viết nó như là một câu trả lời tôi có thể đánh dấu nó là chấp nhận. – Talha

Trả lời

54

Ex:

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

Sử dụng như thế này:

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

Reference

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

+0

Làm cách nào để có được điều này trên chế độ xem tùy chỉnh của tôi? –

+0

@NeonWarge Một chút muộn tôi biết nhưng trong tương lai tôi đã thêm một trường hợp sử dụng –

2

thứ tự bên trong các vấn đề XML, ít nhất là để che khuất. Xác định enum của bạn ở trên (hoặc bên trong) khai báo-styleable của bạn ... không dưới đây.

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

Tôi đã có một enum rất dài nên tôi đặt nó ở cuối XML để cải thiện khả năng đọc. Nó sẽ phân tích cú pháp chính xác nhưng từ chối các giá trị trong chế độ Thiết kế.

Các vấn đề liên quan