Có một tài liệu nhỏ quý giá về declare-styleablethẻ 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 formatthuộc tính của attrthẻ. 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 formatthuộ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ẽ formatthuộ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
enumgiá trị và một thuộc tính có thể nhận một tậpflaggiá trị là gì? - Có ai biết bất kỳ tài liệu nào tốt hơn về cách
declare-styleablehoạt động (ngoài kỹ thuật đảo ngược mã nguồn Android) không?