Android . , DatePickerDialog Holo Material. , SDK AppCompat. .
, , Hierarchy Viewer, . .
. , DatePickerDialog, :
:
static String getThemeNameFromContext(Context context) {
Resources.Theme theme = context.getTheme();
String themeName;
try {
Field field = theme.getClass().getDeclaredField("mThemeResId");
if (!field.isAccessible()) {
field.setAccessible(true);
}
int themeResId = field.getInt(theme);
themeName = context.getResources().getResourceEntryName(themeResId);
} catch (Exception e) {
themeName = "Theme.DeviceDefault";
}
return themeName;
}
/ :
static String getResourceName(Context context, int attribute) {
TypedArray typedArray = context.obtainStyledAttributes(new int[]{attribute});
try {
int resourceId = typedArray.getResourceId(0, 0);
return context.getResources().getResourceEntryName(resourceId);
} finally {
typedArray.recycle();
}
}
DatePickerDialog , , :
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
}
}, 2015, Calendar.SEPTEMBER, 9);
datePickerDialog.show();
Button positiveButton = datePickerDialog.getButton(DatePickerDialog.BUTTON_POSITIVE);
String theme = getThemeNameFromContext(datePickerDialog.getContext());
String datePickerStyle = getResourceName(datePickerDialog.getContext(), android.R.attr.datePickerStyle);
String buttonStyle = getResourceName(positiveButton.getContext(), android.R.attr.buttonStyle);
Log.i("LOGTAG", "Theme: " + theme);
Log.i("LOGTAG", "datePickerStyle: " + positiveButton);
Log.i("LOGTAG", "buttonStyle: " + buttonStyle);
theme, datePickerStyle buttonStyle:
: ThemeOverlay.Material.Dialog
datePickerStyle: Widget.Material.Light.DatePicker
buttonStyle: Widget.Material.Light.Button
, - . DatePickerDialog, , AlertDialog. , , AlertDialog. , buttonStyle, .
, . , DialogFragment onStart(), :
@Override
public void onStart() {
super.onStart();
DatePickerDialog dialog = (DatePickerDialog) getDialog();
Button btnPos = dialog.getButton(DatePickerDialog.BUTTON_POSITIVE);
Button btnNeg = dialog.getButton(DatePickerDialog.BUTTON_NEGATIVE);
btnPos.setText("CUSTOM");
btnPos.setTextAppearance(android.R.style.TextAppearance_Large);
btnNeg.setTextColor(Color.RED);
}

:
, , . ** Android. , XML.