Làm cách nào để áp dụng kiểu cho tất cả các nút của ứng dụng Android


131

Tôi có một phong cách áp dụng cho toàn bộ ứng dụng của mình:

AndroidManifest.xml:

<application android:theme="@style/ApplicationStyle" android:icon="@drawable/icon" android:label="@string/app_name">

Và trong tệp kiểu của tôi:

 <style name="ApplicationStyle" parent="android:Theme">
  <item name="android:button">@style/CKButton</item>
 </style>
 <style name="CKButton" parent="android:style/Widget.Button">
  <item name="android:textSize">19sp</item>
  <item name="android:layout_margin">0dip</item>
  <item name="android:background">#ff0000</item>
 </style>

Nhưng phong cách không được áp dụng.

Tôi xin lỗi nếu tôi chỉ sử dụng tên giả trong ApplicationStyle- Itemnhưng tôi không biết nơi nào để tìm tên đối tượng và giả sử đơn giản, android:buttonáp dụng cho tất cả các nút.


1
Xin hãy xem câu trả lời của tôi trên stackoverflow.com/a/26625931/1065835
Maksim Dmitriev

Câu trả lời:


206

Đối với kiểu Android, bạn tham chiếu các thuộc tính đặt sẵn mà Android đã đặt ra R.attr. Trong trường hợp này, có vẻ như bạn muốn tham khảo android:buttonStyle. Tôi nghĩ rằng điều này sẽ làm việc:

<style name="ApplicationStyle" parent="android:Theme">
  <item name="android:buttonStyle">@style/CKButton</item>
</style>

1
Chúa ơi, tôi đã tìm kiếm chức năng như vậy từ lâu. Không biết tại sao textColor của các nút không tuân theo thuộc tính textColor của chủ đề chính. Cảm ơn nhiều!
Fenix ​​Voltres

Có ai không làm thế nào để làm điều này cho spinner?
Mike6679

31
Chỉ cần một lưu ý: nếu kiểu CKButton không kế thừa @android: style / Widget.Button, nút sẽ ngừng hoạt động.
James

9
sự khác biệt giữa parent="android:Widget.Button"và là parent=@android:style/Widget.Buttongì?
Lỗi xảy ra vào

Tại sao trình chỉnh sửa bố cục không xem trước các thay đổi theo kiểu nút được đặt trong chủ đề
Kẻ giết ngườ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.