2013-03-02 12 views
47

Tôi có thể biết sự khác biệt giữa styles.xmlthemes.xml là gì? Đối với tôi, họ chỉ trông giống như cả hai XML có cùng định dạng.Sự khác biệt giữa styles.xml và themes.xml

<style name="... 
    <item name="... 

Vì vậy, trong ứng dụng của tôi mà cung cấp màu tùy biến, kích thước, có thể vẽ được, ... Tôi cần cả hai styles.xmlthemes.xml không? Làm thế nào tôi nên quyết định XML để đưa vào tập tin nào?

Trả lời

72

Trong toàn bộ trang của Styles and Themes. Bạn có thể đang tìm kiếm dòng này.

Khi bạn áp dụng kiểu cho một Chế độ xem duy nhất trong bố cục, các thuộc tính được xác định theo kiểu chỉ được áp dụng cho Chế độ xem đó. Nếu một kiểu là áp dụng cho Nhóm View, thì phần tử Xem con sẽ không kế thừa thuộc tính kiểu dáng — chỉ thành phần mà bạn áp dụng trực tiếp kiểu mới sẽ áp dụng thuộc tính của nó. Tuy nhiên, bạn có thể áp dụng một kiểu như vậy rằng nó áp dụng cho tất cả các yếu tố Xem — bằng cách áp dụng kiểu làm chủ đề.

Khi bạn áp dụng làm chủ đề, nó sẽ thay đổi mọi thứ trong phạm vi, tùy thuộc vào việc bạn áp dụng nó trên Hoạt động hoặc Ứng dụng. Phong cách là 'địa phương' hơn.

+34

không có giải thích sự khác biệt giữa hai tệp, nó chỉ giải thích sự khác biệt trong khái niệm. Tuy nhiên nó có lẽ không phức tạp hơn, như trong hầu hết các ví dụ chúng ta thấy rằng bạn đặt "MyTheme" trong styles.xml, và bạn sử dụng nó như là một chủ đề trong tệp kê khai. Ví dụ để có thể sử dụng: trong tệp kê khai, không rõ liệu bạn có cần định nghĩa CustomTheme trong styles.xml hoặc themes.xml hay không quan trọng cái nào trong số đó. – Gavriel

+0

điều này không bao hàm sự khác biệt giữa styles.xml và themes.xml. xem @iceagleanswer [here] (http://stackoverflow.com/a/19808011/5079879) –

+0

tại sao không ghi đè kiểu gốc? –

-4

Hi đây là một bài viết liên quan đến sự khác biệt giữa phong cách và chủ đề XML trong Android please go through

Và cũng ở đây android documentation liên quan đến phong cách và chủ đề trong Android.

23

Trích dẫn từ hướng dẫn API Android:

Để tạo một tập hợp các phong cách, tiết kiệm một tập tin XML trong res/values/ thư mục của dự án của bạn. Tên của tệp XML là tùy ý, nhưng nó phải sử dụng phần mở rộng .xml và được lưu trong thư mục res/values/. Nút gốc của tệp XML phải là <resources>.

Full documentation

Vì vậy, tôi đoán nó thực sự không quan trọng nếu bạn đặt bất kỳ phong cách trong bất kỳ tập tin miễn là nó là một tập tin xml mà nằm ở res/values/ thư mục.

+2

Có, lý do mọi người sử dụng styles.xml và themes.xml là phân biệt các kiểu được áp dụng cho các chế độ xem và kiểu được áp dụng làm chủ đề cho toàn bộ hoạt động/ứng dụng. Nó chỉ làm cho nó dễ dàng hơn để sàng lọc thông qua tất cả các phong cách khác nhau. – clu

3

Taken từ tài liệu Styles and Themes, trong phần Styles Định nghĩa:

Để tạo một tập hợp các phong cách, tiết kiệm một tập tin XML trong res/values ​​/ thư mục của dự án của bạn. Tên của tệp XML là tùy ý, nhưng nó phải sử dụng phần mở rộng .xml và được lưu trong thư mục res/values ​​/.

The root node of the XML file must be <resources>. 
10

Không có sự khác biệt về chức năng giữa styles.xml và themes.xml như nhiều câu trả lời đã chỉ ra.

Điều đáng lưu ý là ứng dụng iosched2014 của Google chỉ có một tệp styles.xml (không có themes.xml).

https://github.com/google/iosched

0

Tôi chỉ nhận ra rằng ví dụ màu sắc văn bản Thanh công cụ đi vào một bản tuyên bố chủ đề, và cho các khía cạnh khác đi vào một tuyên bố phong cách

<style name="ToolbarTheme" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="android:textColorPrimary">@android:color/white</item> 
    <item name="android:textColorSecondary">@android:color/white</item> 
</style> 

<style name="ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar"> 
    <item name="android:minHeight">?attr/actionBarSize</item> 
    <item name="android:background">@color/colorPrimary</item> 
</style> 

Và trong tờ khai thanh công cụ

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    style="@style/ToolbarStyle" 
    android:theme="@style/ToolbarTheme"> 
</android.support.v7.widget.Toolbar> 

Tôi đã cố gắng bỏ qua chủ đề bằng cách di chuyển các mục của nó vào kiểu, nhưng điều đó không hiệu quả. Vì vậy, trong trường hợp này, có vẻ như đây chỉ là những kiểu như chủ đề vì chúng ảnh hưởng đến các trẻ thừa kế trong thanh công cụ như các trường văn bản.