I have a style configured for my Alert Dialog, and the style is displayed in the [most] dialog box without any problems, the only problem is the buttons.
The phone is the HTC Evo working with SenseUI, and the AlertDialog buttons continue to be smoothed through the SenseUI theme. I tried to change the style of my application (rtg_style) to be a child of Theme.Dialog instead of Theme.Light.NoTitleBar, and the buttons for actions continue to be styled correctly, but AlertDialogs are also still styled. I'm trying to avoid having to write a fully custom AlertDialog replacement, what else can I do?
styles.xml:
<style name="rtg_style" parent="@android:style/Theme.Light.NoTitleBar"> <item name="android:windowBackground">@drawable/bluebg</item> <item name="android:buttonStyle">@style/rtg_Button</item> <item name="android:listViewStyle">@style/rtg_ListView</item> <item name="android:expandableListViewStyle">@style/rtg_ExpandableListView</item> </style> <style name="rtg_AlertDialog" parent="@style/rtg_style"> <item name="android:buttonStyle">@style/rtg_Button</item> <item name="android:listViewStyle">@style/rtg_ListView</item> <item name="android:alertDialogStyle">@style/dialog</item> </style> <style name="rtg_Button" parent="@android:style/Widget.Button"> <item name="android:background">@drawable/button</item> <item name="android:textColor">#ffffff</item> <item name="android:textSize">15sp</item> <item name="android:textStyle">bold</item> <item name="android:height">40dp</item> </style> <style name="rtg_ListView" parent="@android:style/Widget.ListView"> <item name="android:listSelector">@drawable/listview</item> </style> <style name="rtg_ExpandableListView" parent="@android:style/Widget.ExpandableListView"> <item name="android:listSelector">@drawable/listview</item> </style> <style name="base"> <item name="android:padding">10dp</item> </style> <style name="title" parent="@style/base"> <item name="android:textColor">#FFFFFF</item> <item name="android:textSize">16sp</item> <item name="android:textStyle">bold</item> </style> <style name="body" parent="@style/base"> <item name="android:textColor">#000000</item> <item name="android:textStyle">normal</item> </style> <style name="dialog"> <item name="android:fullDark">@drawable/dialog_body</item> <item name="android:topDark">@drawable/dialog_title</item> <item name="android:centerDark">@drawable/dialog_body</item> <item name="android:bottomDark">@drawable/dialog_footer</item> <item name="android:fullBright">@drawable/dialog_body</item> <item name="android:centerBright">@drawable/dialog_body</item> <item name="android:bottomBright">@drawable/dialog_footer</item> <item name="android:bottomMedium">@drawable/dialog_footer</item> <item name="android:centerMedium">@drawable/dialog_body</item> <item name="android:windowIsFloating">true</item> </style>
Activity.java:
AlertDialog.Builder ab = new AlertDialog.Builder(new ContextThemeWrapper(OrderSummary.this, R.style.rtg_AlertDialog)); ab.setTitle("Select a reason"); String[] reasons = new String[Shared.Reasons_RejectAll.size()]; for (int i = 0; i < Shared.Reasons_RejectAll.size(); i++) { try { reasons[i] = Shared.Reasons_RejectAll.get(i).Name; } catch (Exception ex) { ex.printStackTrace(); } } ab.setItems(reasons, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { rejectReason = Shared.Reasons_RejectAll.get(which).Name; for (int i = 0; i <= r.ItemList.length; i++){ r.ItemList[index].item.get(i).setStatus(eItemStatus.REJECTED); r.ItemList[index].item.get(i).setRejectReason(rejectReason); } adapter.notifyDataSetChanged(); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {
source share