【问题标题】:How to change the default color scheme timepicker dialog fragment?如何更改默认配色方案时间选择器对话框片段?
【发布时间】:2015-06-21 12:09:06
【问题描述】:

我正在尝试更改时间选择器对话框片段的默认颜色。 现在我不知道我应该做什么。

这是我设法将我的主题设置为(没有 actionBar):

但这是我得到的对话框:

这是我的 xml 样式文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_accent</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">@color/color_primary</item>
    </style>
</resources>

我的颜色文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="flat_text">#f14268</color>
    <color name="background_flatbtn">#fff</color>
    <color name="color_accent">#f14268</color>
    <color name="color_primary">#d83b5d</color>
    <color name="color_secondary">#d83b5d</color>
</resources>

mytimepicker 片段:

public class DialogHandler extends DialogFragment
        implements TimePickerDialog.OnTimeSetListener {
    Context context;

    public DialogHandler(Context context){
        this.context=context;

    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current time as the default values for the picker
        final Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);
        TimePickerDialog dialog= new TimePickerDialog(new ContextThemeWrapper(getActivity(),R.style.AppTheme), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
        // Create a new instance of TimePickerDialog and return it
        return dialog;
    }

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // Do something with the time chosen by the user
        Toast.makeText(context, "your time is selected",Toast.LENGTH_LONG).show();
    }
}

我的对话电话:

DialogHandler newFragment = new DialogHandler(getApplicationContext());
        newFragment.show(getSupportFragmentManager() , "time_Picker");

请帮帮我。 提前致谢:)

【问题讨论】:

标签: javascript android android-fragments android-theme android-timepicker


【解决方案1】:

花了一段时间,但我想通了! 在您的时间选择器中设置自定义主题

转到styles.xml 页面。 添加新主题:

<style name="Dialog" parent="Base.Theme.AppCompat.Dialog">
        <itemname="android:timePickerDialogTheme">@style/AppTheme2</item>
</style>

定义一个继承你自定义应用程序主题的主题(以保持应用程序的一致性),这里可以提到时间选择器对话框的属性:

<style name="AppTheme2" parent="AppTheme.Base">
        <item name="android:windowIsFloating">true</item>
</style>

对我来说,这是我用于整个应用的自定义主题:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="colorAccent">@color/accent</item>
</style>

在时间选择器调用中应用主题

TimePickerDialog dialog= new TimePickerDialog(
 new ContextThemeWrapper(getActivity(),R.style.Dialog)
, this, hour, minute
, DateFormat.is24HourFormat(getActivity())); 

根据我的猜测,如果您想要更多自定义,您应该将其添加到 AppTheme2 样式中(或者您想调用的任何名称)

这是您可以添加到其中的自定义列表(虽然不确定所有内容):

我希望这会有所帮助。我不是这里的专家,但这似乎可行,所以我继续使用它;)

【讨论】:

    【解决方案2】:

    您可以直接在构造函数中为TimerPickerDialog指定主题资源,而无需在App/Activity的主题中使用ContextWrapperandroid:timePickerDialogTheme(仅在API 21中可用)。

    TimePickerDialog 的主题示例:

    <style name="TimePicker" parent="Theme.AppCompat.Light.Dialog">
        <item name="android:windowIsFloating">true</item>
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="colorAccent">@color/accent</item>
    </style>
    

    将其资源 ID 作为第二个参数传递:

    TimePickerDialog dialog = new TimePickerDialog(getActivity(), R.style.TimePicker, 
    this, hour, minute, false); 

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 2014-03-22
      • 2023-01-27
      • 2012-05-17
      相关资源
      最近更新 更多