Dấu hỏi (?) Trong các thuộc tính XML cho Android


140

Bất cứ ai cũng có thể giải thích các dấu hỏi có nghĩa trong các thuộc tính XML của Android?

<TextView    
    style="?android:attr/windowTitleStyle"
    More attributes
/>

Câu trả lời:


132

Dấu hỏi có nghĩa là tham chiếu đến giá trị tài nguyên trong chủ đề hiện đang được áp dụng. Xem Hướng dẫn phát triển Android linuxtopia hoặc Hướng dẫn phát triển android.com để biết thêm về nó.

\? thoát khỏi dấu hỏi.


3
Tôi nghĩ sẽ tốt hơn nếu trỏ liên kết thứ hai của bạn tới: developer.android.com/guide/topics/resource/
mẹo

9
Các bài viết của Dev Guide đã được cơ cấu lại, đây là liên kết trực tiếp mới: developer.android.com/guide/topics/resource/
mẹo

3
Tôi nghĩ rằng nó thích hợp hơn để nói? được sử dụng để "Tham chiếu các thuộc tính kiểu" thay vì "tham chiếu đến giá trị tài nguyên trong chủ đề hiện đang được áp dụng". Theo liên kết hướng dẫn dev android.com bạn cung cấp.
Helin Wang

5
Tôi nghĩ rằng nó có ý nghĩa nhất khi xem xét nhiều chủ đề có chứa thuộc tính tài nguyên tùy chỉnh giống nhau. Giả sử bạn có các chủ đề liên quan đến phim như MyThemeTransformers và MyThemeHobbit và cả hai đều có một thuộc tính được gọi là movieIcon. Và movieIcon trỏ đến một tài nguyên @drawable, giả sử robot hoặc hình ảnh hobbit, trong mỗi định nghĩa chủ đề. Bạn có thể tham khảo "? Attr / movieIcon" bất cứ nơi nào chủ đề có hiệu lực (như trong thanh công cụ hoặc hộp thoại hoặc bất kỳ loại bố cục Chế độ xem nào) và nó sẽ tự động trỏ đến chính xác có thể vẽ khi bạn chuyển giữa các chủ đề. Tôi hy vọng điều đó sẽ giúp.
Devon Biere

1
@DevonBiere nó đã giúp! Sẽ thật tuyệt nếu bạn gửi bình luận của mình dưới dạng câu trả lời.
Alexander Suraphel

37

Các ? cho phép bạn tham khảo một thuộc tính kiểu thay vì tài nguyên được mã hóa cụ thể . Xem "Thuộc tính kiểu tham chiếu" trong Hướng dẫn dành cho Android Dev để biết chi tiết.

Vì vậy, làm thế nào là thực sự hữu ích? Nó có ý nghĩa nhất khi xem xét nhiều chủ đề có chứa thuộc tính tài nguyên tùy chỉnh giống nhau .

Giả sử bạn có các chủ đề liên quan đến phim như MyThemeTransformers và MyThemeHobbit và cả hai đều có một thuộc tính được gọi là movieIcon . Và thuộc tính movieIcon đó trỏ đến một tài nguyên @drawable khác, giả sử robot.png hoặc hobbit.png, trong mỗi định nghĩa chủ đề.

Bạn có thể tham khảo " ? Attr / movieIcon " bất cứ nơi nào chủ đề có hiệu lực (như trong thanh công cụ hoặc hộp thoại hoặc bất kỳ loại bố cục Chế độ xem nào) và nó sẽ tự động trỏ đến chính xác có thể vẽ khi bạn chuyển giữa các chủ đề. Bạn không cần bất kỳ logic phụ thuộc chủ đề nào để sử dụng các drawable khác nhau. Bạn chỉ cần xác định thuộc tính movieIcon cho từng chủ đề và khung Android sẽ lo phần còn lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.