Bạn có thể xem nguồn từ android themes.xml
, styles.xml
và colors.xml
. Một điều bạn nhận thấy từ tệp colors.xml là không có nhiều màu được xác định. Điều này là bởi vì hầu hết các widget được thực hiện thông qua các tập tin 9-patch.
nút phong cách:
223 <style name="Widget.Button">
224 <item name="android:background">@android:drawable/btn_default</item>
225 <item name="android:focusable">true</item>
226 <item name="android:clickable">true</item>
227 <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item>
228 <item name="android:textColor">@android:color/primary_text_light</item>
229 <item name="android:gravity">center_vertical|center_horizontal</item>
230 </style>
Tất cả các công việc thực hiện để thay đổi màu nền được thực hiện trong btn_default
Drawable
.
Nguồn btn_default.xml:
17 <selector xmlns:android="http://schemas.android.com/apk/res/android">
18 <item android:state_window_focused="false" android:state_enabled="true"
19 android:drawable="@drawable/btn_default_normal" />
20 <item android:state_window_focused="false" android:state_enabled="false"
21 android:drawable="@drawable/btn_default_normal_disable" />
22 <item android:state_pressed="true"
23 android:drawable="@drawable/btn_default_pressed" />
24 <item android:state_focused="true" android:state_enabled="true"
25 android:drawable="@drawable/btn_default_selected" />
26 <item android:state_enabled="true"
27 android:drawable="@drawable/btn_default_normal" />
28 <item android:state_focused="true"
29 android:drawable="@drawable/btn_default_normal_disable_focused" />
30 <item
31 android:drawable="@drawable/btn_default_normal_disable" />
32 </selector>
Mỗi một trong những là một tập tin 9 vá. Vấn đề là những người đó là pngs. Các màu được tích hợp vào các tệp hình ảnh và không được định nghĩa ở bất kỳ đâu. Như bạn đã nhận thấy những hình ảnh này có thể được thay thế và thay đổi giao diện.
Thật không may, những gì bạn muốn là không thể. Bạn sẽ phải chọn một màu duy nhất để đi với. Màu này có lẽ nên được chọn để phù hợp với phần còn lại của ứng dụng của bạn. Xin lỗi :(
đây là một câu hỏi hay và tôi – mad
Đã 5 năm kể từ khi câu hỏi này được hỏi ... câu trả lời hiện tại được đặt tại đây: http://stackoverflow.com/questions/12375766/how-to-get-background- color-from-current-theme-programmatically (câu trả lời đầu tiên chắc chắn hoạt động ...) – pbarranis