Có một tài liệu nhỏ quý giá về declare-styleable
thẻ mà chúng ta có thể khai báo các kiểu tùy chỉnh cho các thành phần. Tôi đã tìm thấy danh sách các giá trị hợp lệ này cho format
thuộc tính của attr
thẻ. Mặc dù điều đó rất hay, nhưng nó không giải thích cách sử dụng một số giá trị đó. Khi duyệt qua attr.xml (nguồn Android cho các thuộc tính chuẩn), tôi phát hiện ra rằng bạn có thể làm những việc như:
<!-- The most prominent text color. -->
<attr name="textColorPrimary" format="reference|color" />
Các format
thuộc tính rõ ràng có thể được thiết lập để một sự kết hợp của các giá trị. Có lẽ format
thuộc tính giúp trình phân tích cú pháp diễn giải một giá trị kiểu thực tế. Sau đó, tôi phát hiện ra điều này trong attr.xml:
<!-- Default text typeface. -->
<attr name="typeface">
<enum name="normal" value="0" />
<enum name="sans" value="1" />
<enum name="serif" value="2" />
<enum name="monospace" value="3" />
</attr>
<!-- Default text typeface style. -->
<attr name="textStyle">
<flag name="normal" value="0" />
<flag name="bold" value="1" />
<flag name="italic" value="2" />
</attr>
Cả hai điều này dường như khai báo một tập hợp các giá trị được phép cho kiểu được chỉ định.
Vì vậy, tôi có hai câu hỏi:
- Sự khác biệt giữa thuộc tính style có thể nhận một trong một tập hợp
enum
giá trị và một thuộc tính có thể nhận một tậpflag
giá trị là gì? - Có ai biết bất kỳ tài liệu nào tốt hơn về cách
declare-styleable
hoạt động (ngoài kỹ thuật đảo ngược mã nguồn Android) không?