Vì lý do của MrSnowflake không chính xác, tôi đang tự do đưa ra một câu trả lời khác.
Có gì đó sai với đánh dấu trong câu hỏi Steve Haley, và nó được trộn lên alertDialogStyle và alertDialogTheme, rất có thể vì thực tế rằng alertDialogTheme đã được giới thiệu lâu sau alertDialogStyle là xung quanh.
Vì vậy, ngay cả khi @android: style/Theme.Dialog.Alert có sẵn trên nền tảng Andoid của bạn, bạn vẫn không thể sử dụng sức mạnh biểu thức của nó bằng cách gắn một phiên bản trở lại vào chủ đề của riêng bạn trừ khi nền tảng Android của bạn hỗ trợ android: alertDialogTheme thuộc tính/mục cho chủ đề. (Có thể hoặc có thể không phải là trường hợp tồn tại các phiên bản Android không nhất quán như vậy, tôi không biết chắc chắn. Nhưng đánh dấu được sử dụng trong câu hỏi cho thấy nó có.)
Trong đánh dấu câu hỏi, phụ huynh = " @android: style/Theme.Dialog.Alert "sẽ không làm gì cả ngoại trừ việc tạo ảo tưởng rằng bạn đang tùy chỉnh chủ đề hộp thoại cảnh báo khi bạn thực sự chỉ tùy chỉnh kiểu hộp thoại cảnh báo.
Đây là cách đánh dấu sẽ như thế nào; không phải tất cả các phiên bản Android đều hỗ trợ tất cả các tính năng.
<style name="myTheme" parent="android:Theme">
<item name="android:buttonStyle">@style/customButtonStyle</item>
<item name="android:alertDialogStyle">@style/dialogAlertStyle</item>
<item name="android:alertDialogTheme">@style/dialogAlertTheme</item>
</style>
<style name="dialogAlertStyle" parent="@android:style/AlertDialog">
<item name="android:fullDark">[...]</item>
[...]
</style>
<style name="dialogAlertTheme" parent="@android:style/Theme.Dialog.Alert">
<item name="android:windowBackground">[...]</item>
[...]
</style>
Tùy chỉnh phong cách hộp thoại cảnh báo đã được khoảng một thời gian khá lâu nhưng được giới hạn cung cấp (nền) drawables cho "fullDark", "topDark" vv
Tùy chỉnh chủ đề hộp thoại cảnh báo sẽ mở ra một phương pháp để cung cấp các thuộc tính như windowBackground, windowTitleStyle và như vậy, nhưng như đã nêu trước đó, bạn cần một phiên bản Android hỗ trợ thuộc tính/item alertDialogThem cho các chủ đề. Tôi không thể tìm ra chính xác khi nào điều này được giới thiệu nhưng nó chưa được Android 2.2 và Eclipse sẽ cho bạn biết ...
Tôi không có nguồn lực để xác nhận kết luận của MrSnowflake rằng không thể tạo kiểu hộp thoại cảnh báo các nút trong XML, nhưng trừ khi chúng ta đang đối mặt với một trong những khía cạnh hơi khó chịu của Android, nơi một tính năng thực sự bị thiếu, tôi thấy nó khó xảy ra.
Như một vấn đề của thực tế, những gì còn thiếu trong câu hỏi là phần phù hợp nhất trong lĩnh vực này, cụ thể là
<style name="customButtonStyle" />
để kết luận rằng nút hộp thoại cảnh báo không tuân theo Widget.Button chưa được chứng minh theo quan điểm của tôi.
Kết luận hợp nhất: Khả năng tạo kiểu hộp thoại cảnh báo độc lập với các tiện ích khác bị giới hạn trong Android nhưng trở nên mạnh mẽ hơn khi các phiên bản mới được cải thiện theo khía cạnh này.
Hmm. Điều đó sẽ gây phiền nhiễu; việc thay đổi các nút Dialog không phải là một điều bất thường, vì bạn dễ dàng áp dụng kiểu nút cho các nút Hoạt động 'bình thường'. –
Trong các hoạt động bình thường, bạn xác định bố cục của chế độ xem nội dung bằng xml. Hộp thoại thực hiện điều này cho bạn, vì vậy bạn không có quyền truy cập vào bố cục xml. Thực hiện hộp thoại của riêng bạn (có thể chỉ với một setContentView() gọi) cho phép bạn sử dụng một xml khác nhau và do đó phong cách khác nhau cho các nút. – MrSnowflake
Làm thế nào bạn sẽ phân lớp AlertDialog để bạn có thể sử dụng AlertDialog.Builder với lớp con của bạn? –