Is it possible to change the style of an Android L TimePickerDialog?

后端 未结 4 1394
陌清茗
陌清茗 2020-12-03 05:10

I was testing my app on an Android L emulator, and I noticed that the TimePickerDialog has significantly changed to this:

相关标签:
4条回答
  • 2020-12-03 05:41

    If you want the AM / PM to be a picker instead of a button then I recommend you use the single parameter constructor with a ContextThemeWrapper:

    new TimePicker(new ContextThemeWrapper(getActivity(), android.R.style.Theme_Holo_Light_Dialog_NoActionBar));
    

    AM-PM picker

    If you pass the theme into the multiple parameter constructor then you'll end up with a rather ugly AM / PM button, and the colon will be missing between the hour and minute columns.

    new TimePicker(getActivity(), null, TimePickerDialog.THEME_HOLO_LIGHT);
    

    AM-PM button

    0 讨论(0)
  • 2020-12-03 05:44

    You can use the TimePickerDialog constructor with theme parameter to specify the theme.

    TimePickerDialog(Context context, 
                     int theme, 
                     TimePickerDialog.OnTimeSetListener callBack, 
                     int hourOfDay, 
                     int minute, 
                     boolean is24HourView)
    
    0 讨论(0)
  • 2020-12-03 05:46

    As LordRaydenMK said, use the TimePickerDialog constructor with theme parameter and provide this theme: android.R.style.CustomDatePickerDialog

    And in your Styles.xml define this:

      <style name="CustomDatePickerDialog"
             parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="android:dialogTheme">@style/MyDialogTheme</item>
        <item name="android:timePickerStyle">@style/MyDatePicker</item>
      </style>
    
      <style name="MyDialogTheme"
             parent="Theme.AppCompat.Light.Dialog">
        <item name="android:timePickerStyle">@style/MyDatePicker</item>
      </style>
    
      <style name="MyDatePicker"
             parent="@android:style/Widget.Material.Light.TimePicker">
        <item name="android:timePickerMode">spinner</item>
      </style>
    
    0 讨论(0)
  • 2020-12-03 05:59

    Add android:timePickerMode="spinner" to the XML

        <TimePicker
            android:id="@+id/timePicker1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:timePickerMode="spinner">
        </TimePicker>
    

    https://developer.android.com/reference/android/R.attr.html#timePickerMode

    You can choose between spinner or clock modes. This attribute is only available from API level 21, before that the spinner mode was the only option available.

    0 讨论(0)
提交回复
热议问题