Android 将TimePickerDialog的主题更改为使用AppTheme
我使用中给出的以下代码实现了一个Android 将TimePickerDialog的主题更改为使用AppTheme,android,Android,我使用中给出的以下代码实现了一个TimePickerDialog: } 我得到了这样一个对话框: 我想更改TimePickerDialog的主题,以与扩展AppCompat主题的AppTheme配合使用。当我按照一些人的说法使用另一个构造函数时,主题可以工作,但是对话框将全屏显示。我使用的代码是: // Create a new instance of TimePickerDialog and return it return new TimePickerDialog(getA
TimePickerDialog
:
}
我得到了这样一个对话框:
我想更改TimePickerDialog
的主题,以与扩展AppCompat
主题的AppTheme
配合使用。当我按照一些人的说法使用另一个构造函数时,主题可以工作,但是对话框将全屏显示。我使用的代码是:
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), R.style.AppTheme, this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
我明白了:
我该怎么办我希望对话框保持不变,但只更改重音颜色。谢谢 我们可以更改主题,如下例所示。
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
// Get a Calendar instance
final Calendar calendar = Calendar.getInstance();
// Get the current hour and minute
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
/*
Creates a new time picker dialog with the specified theme.
TimePickerDialog(Context context, int themeResId,
TimePickerDialog.OnTimeSetListener listener,
int hourOfDay, int minute, boolean is24HourView)
*/
// TimePickerDialog Theme : THEME_DEVICE_DEFAULT_LIGHT
TimePickerDialog tpd = new TimePickerDialog(getActivity(),
AlertDialog.THEME_DEVICE_DEFAULT_LIGHT,this,hour,minute,false);
// TimePickerDialog Theme : THEME_DEVICE_DEFAULT_DARK
TimePickerDialog tpd2 = new TimePickerDialog(getActivity(),
AlertDialog.THEME_DEVICE_DEFAULT_DARK,this,hour,minute,false);
// TimePickerDialog Theme : THEME_HOLO_DARK
TimePickerDialog tpd3 = new TimePickerDialog(getActivity(),
AlertDialog.THEME_HOLO_DARK,this,hour,minute,false);
// TimePickerDialog Theme : THEME_HOLO_LIGHT
TimePickerDialog tpd4 = new TimePickerDialog(getActivity(),
AlertDialog.THEME_HOLO_LIGHT,this,hour,minute,false);
// TimePickerDialog Theme : THEME_TRADITIONAL
TimePickerDialog tpd5 = new TimePickerDialog(getActivity(),
AlertDialog.THEME_TRADITIONAL,this,hour,minute,false);
// Return the TimePickerDialog
return tpd;
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute){
// Do something with the returned time
TextView tv = (TextView) getActivity().findViewById(R.id.tv);
tv.setText("HH:MM\n" + hourOfDay + ":" + minute);
}
}
有关更详细的示例,请参见
我希望这将对您有所帮助。您必须使用主题.AppCompat.Light.Dialog
作为父主题
您需要在style.xml
中定义Dialog
主题
<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/purple</item>
<item name="colorControlNormal">@color/orange</item>
</style>
我希望它能帮助你。啊,该死的。好像我错过了。非常感谢!它起作用了。我不得不使用
而不是colorControlNormal
。不知道为什么。但是成功了!为什么在values-v21 xml中使用Theme.AppCompat.Light.Dialog.Alert不起作用???我试过这个。但这使我们能够使用一个内置主题,而不是自定义主题。@rajesh说的正是我想要的。谢谢
<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/purple</item>
<item name="colorControlNormal">@color/orange</item>
</style>
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), R.style.DialogTheme, this, hour, minute,
DateFormat.is24HourFormat(getActivity()));