2012-01-04 41 views
5

Trong một nét thanh tiến trình phong cách được định nghĩa làAndroid cú pháp kiểu thanh tiến trình

style="?android:attr/progressBarStyleHorizontal" 

Tôi không rõ ràng về cách thức này công trình cú pháp. Ai đó có thể giải thích cú pháp này?

Trả lời

5

Cú pháp đó được sử dụng để tham chiếu thuộc tính kiểu hệ thống và cú pháp được sử dụng để tham chiếu tài nguyên được hệ thống Android xác định trước: trong khi trong trường hợp tài nguyên chung bạn sử dụng, ví dụ: @android:drawable/ic_media_play để tham chiếu một đối tượng được thể hiện bằng tệp ic_media_play.png trong giá trị thuộc tính android:src cho phần tử giao diện ImageButton được bao gồm trong bố cục XML, tham chiếu thuộc tính được tạo bằng cách sử dụng ? thay vì @, nhưng phần còn lại được tạo thành giống nhau quy tắc và hoạt động theo cùng một cách.

Đặc biệt, các thuộc tính thường được lưu trữ trong res/values/attrs.xml, nơi bạn có thể tìm thấy (nhìn vào tài nguyên hệ thống lưu trữ trong Android SDK) sau

<attr name="progressBarStyleHorizontal" format="reference" /> 

chỉ ra rằng các thuộc tính là một tham chiếu đến một số tài nguyên khác . Thuộc tính phong cách được định nghĩa trong res/values/themes.xml trong thời trang sau đây:

<item name="progressBarStyleHorizontal"> 
    @android:style/Widget.ProgressBar.Horizontal 
</item> 

mà thực sự là một tham chiếu đến phong cách Widget.ProgressBar.Horizontal trong hệ thống res/values/styles.xml như đã được mô tả bởi câu trả lời khác.

Lưu ý rằng, trong bối cảnh khi hệ thống biết để mong đợi một tham chiếu đến một tài nguyên thuộc tính, thậm chí bạn có thể bỏ qua các loại tài nguyên (tức là attr/ phần), dẫn đến một cú pháp như:

android:textColor="?android:textColorSecondary" 

bạn có thể tìm thấy một chút thêm thông tin về Android developer guide

1

android: attr nghĩa là phong cách này được chọn từ các khung của android. Vì vậy, nếu bạn duyệt nguồn styles.xml từ khung http://bit.ly/yBC5pM và tìm kiếm progressBarStyleHorizontal, Bạn có thể nhìn thấy nó được thừa hưởng từ Widget.ProgressBar.Horizontal

<style name="Widget.ProgressBar.Horizontal" parent="@style/Widget.ProgressBar"> 
    <item name="maxHeight">20.0dip</item> 
    <item name="indeterminateOnly">false</item> 
    <item name="indeterminateDrawable">@drawable/progress_indeterminate_horizontal</item> 
    <item name="progressDrawable">@drawable/progress_horizontal</item> 
    <item name="minHeight">20.0dip</item> 
</style> 

Tất cả các thuộc tính trên + tính từ Widget.Progressbar (Kể từ khi cha mẹ của nó là điều này) sẽ được kế thừa vào Progressbar của bạn.

+0

câu hỏi của tôi có liên quan đến cú pháp trong đó phong cách được định nghĩa "style =" android:? attr /" – prashant

+0

như guilio nói, phần cú pháp có thể được tìm thấy tại liên kết do anh ấy cung cấp – nandeesh

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