5

Đây là chủ đề ứng dụng của tôi:phong cách colorControlActivated khác nhau trong Android

<style name="BaseTheme" parent="Theme.AppCompat.Light"> 
    ... 
    <item name="colorControlActivated">@color/default_orange</item> 
    ... 
</style> 
... 
<style name="Switch" parent="Material.Widget.Switch"> 
    <item name="colorControlActivated">@color/default_green</item> 
</style> 

Và nếu tôi sử dụng Chuyển phong cách:

<com.rey.material.widget.Switch 
    style="@style/Switch" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:checked="false"/> 

Các colorControlActivated sử dụng đó là một bên trong BaseTheme (cam) thay vì Chuyển đổi một (màu xanh lục).
Tại sao điều này xảy ra? Tôi không thể có khác nhau colorControlActivated cho các Chế độ xem khác nhau?

Cảm ơn.

+1

Đọc bài viết của Chris Banes về [Theme vs Style] (https://chris.banes.me/2014/11/12/theme-vs-style/) để hiểu tại sao điều này không hiệu quả và cách đạt được hiệu quả mong muốn. – alanv

+0

Bài viết hay, tôi đã theo dõi ví dụ của Chris và thay thế "kiểu" bằng "android: theme" nhưng vẫn không hoạt động:/ – GuilhE

+0

Xin chào @GuilhE, bạn đã từng giải quyết vấn đề này chưa? Tôi đang ở chính xác cùng một nơi ngay bây giờ – Nemesis

Trả lời

4

Vấn đề chính là thuộc tính colorControlActivated trong chủ đề của hoạt động có tùy chọn thuộc tính đó trong bất kỳ kiểu tùy chỉnh nào mà bạn xác định và áp dụng cho các chế độ xem cụ thể.

Giải pháp là (và giải pháp này ghi đè thuộc tính cho tất cả các thành phần trong cùng một hoạt động theo cùng một cách) để tạo chủ đề mới và áp dụng chủ đề đó cho hoạt động của bạn trong tệp kê khai. Chủ đề này có thể kế thừa từ chủ đề chính của bạn và chỉ ghi đè lên các thuộc tính bạn cần.

Các chủ đề:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- items--> 
    <item name="colorControlActivated">@android:color/white</item> 
    <!-- items--> 
</style> 

<style name="lightAppTheme" parent="AppTheme" > 
    <item name="colorControlActivated">@color/colorPrimary</item> 
</style> 

Các biểu hiện:

<application 
    android:name=".application.appname" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" 
     android:theme="@style/lightAppTheme" 
     android:screenOrientation="portrait"></activity> 
</application> 

Tôi hy vọng điều này sẽ giúp bất cứ ai mà đi vào này vì nó đã cho tôi một giờ để làm cho nó làm việc.

Để tạo các yếu tố khác nhau trong cùng hoạt động sử dụng các thuộc tính khác nhau colorControlActivated, hãy truy cập vào answer này.

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