2015-09-20 14 views
6

Sto provando a disegnare un TimePickerDialog per sdk 21+ (Lollipop). Finora ho capito come cambiare la colorscheme default in XML:Guida alla progettazione di stili TimePickerDialog per Android/documenti?

<style name="TimePickerTheme" parent="@style/Theme.AppCompat.Light.Dialog"> 
    <item name="colorPrimary">#ff2d6073</item> <!-- no effect --> 
    <item name="colorPrimaryDark">#ff2d6073</item> <!-- no effect --> 
    <item name="colorAccent">#ff2d6073</item> 
    <item name="android:textColor">#ffD0D102</item> 
    <item name="android:textColorPrimary">#ffD0D102</item> 
</style> 

Questo funziona, ma sto cercando una guida o la documentazione per tutte le proprietà che posso cambiare.

  • AccentColor fa la combinazione di colori di base
  • TextColorPrimary fa il colore del testo

Ma quale proprietà, per esempio, ho bisogno di cambiare il grande testo nel 'header' della finestra di dialogo (dove viene visualizzata l'ora selezionata corrente)?

C'è qualche documentazione che elenca tutte le possibili cose che è possibile modificare?

+1

'Android: funziona headerBackground'. Non ero in grado di eseguire il lavoro 'android: numbersTextColor',' android: numbersBackgroundColor'. N.B .: '? ColorControlActivated' (ereditato da'? ColorAccent') fa effettivamente i punti salienti. –

+0

Grazie :) Ho fatto qualche progresso ma ho bisogno di fare qualche test e pulizia prima di postarlo qui. Si scopre che è necessario sovrascrivere il tema, quindi lo stile e (se lo si desidera) l'intestazioneTextAppearance. – REJH

risposta

16

Dopo aver esplorato il tema AOSP e i file di stile xml e un sacco di google ho fatto dei progressi. Ora sono in grado di disegnare la maggior parte delle cose (!).

Quindi questa è una risposta parziale, non ancora fino ad ora. Ma ecco come lontano ho ottenuto:

enter image description here

Si può vedere che io sono ora in grado di tema l'intestazione, il non selezionato part-time (minuti in questo caso), il cerchio, i numeri (!) in quel cerchio e la "mano" (o selettore). Oh, e anche i pulsanti sono in stile.

Lasciatemi spiegare come sono riuscito a far funzionare le cose, in primo luogo: l'importante è che non è possibile ignorare le cose direttamente dal tema dell'app o da un tema/stile di una finestra (di avviso). Devi andare da uno all'altro, per così dire.

Esempio:

AndroidManifest.xml: Impostare tema personalizzato per app e/o attività

<activity> 
    android:theme="@style/Theme.MyTheme" 
</activity> 

valori-V21/styles.xml: (dove si trova il tema personalizzato): impostare il timePickerDialogTheme

<style name="Theme.MyTheme" parent="@style/Theme.AppCompat.Light"> 
    <item name="android:timePickerDialogTheme">@style/TimePickerDialogTheme</item> 
</style> 

Poi sotto, definire il timePickerDialo gTheme e impostare la timePickerStyle:

<style name="TimePickerDialogTheme" parent="@style/Theme.AppCompat.Light.Dialog"> 
    <item name="colorAccent">#ff2d6073</item> <!-- colorAccent here seems to work just fine? --> 
    <item name="android:timePickerStyle">@style/TimePickerDialogStyle</item> 
</style> 

Ora è possibile definire la maggior parte del styling qui ..

<style name="TimePickerDialogStyle" parent="@android:style/Widget.Material.Light.TimePicker"> 

    <item name="colorAccent">#ff2d6073</item> <!-- colorAccent here seems to work just fine? --> 

    <item name="android:timePickerMode">clock</item> 
    <item name="android:headerBackground">#ff2d6073</item> 
    <item name="android:headerTimeTextAppearance">@style/TextAppearance.TimePickerDialogStyle.TimeLabel</item> <!-- TimePicker Time *TextAppearance* --> 
    <item name="android:numbersTextColor">#ff000000</item> 
    <item name="android:numbersSelectorColor">#ff2d6073</item> 
    <item name="android:numbersBackgroundColor">#ffdddddd</item> 

</style> 

La linea importante quanto sopra è:

<item name="android:headerTimeTextAppearance">@style/TextAppearance.TimePickerDialogStyle.TimeLabel</item> 

Perché se si vuole per lo stile del testo (bene, il tempo, in realtà) nell'intestazione è necessario definire il headerTimeTextAppearance:

<style name="TextAppearance.TimePickerDialogStyle.TimeLabel" parent="@android:style/TextAppearance.Material"> 

    <item name="android:textSize">60sp</item> <!-- from --> 
    <item name="android:textColor">#ffD0D102</item> 

</style> 

Ora, se dai un'occhiata allo Widget.Material.TimePicker in AOSP styles.xml (ctrl-f 'timepicker' finché non lo trovi) noterai un sacco di altre proprietà che dovresti essere in grado di modificare:

headerTimeTextAppearance headerAmPmTextAppearance headerSelectedTextColor headerBackground numbersTextColor numbersBackgroundColor amPmTextColor amPmBackgroundColor amPmSelectedBackgroundColor numbersSelectorColor

La maggior parte di questi lavori (a patto che si antepone 'Android:' per ciascuno di essi) ma non ho potuto ottieni 'headerSelectedTextColor' per funzionare. Ho ricevuto un errore di compilazione che diceva qualcosa come "non può corrispondere alla proprietà bla bla". Inoltre, se si guarda il mio esempio sopra, ho hardcoded il textSize per la proprietà 'headerTimeTextAppearance' perché il valore '@ dimen/timepicker_ampm_label_size' ha generato degli errori.

In breve: la maggior parte delle cose sono elencate sopra e come farle funzionare. Ma non tutto è chiaro. Quindi vedrei ancora quella documentazione completa/guida :)

+0

come sei riuscito a colorare a mano ora ?? –

+0

Penso che fosse la proprietà numberSelector. Sono su cellulare quindi non posso controllare correttamente – REJH

+0

Ho cambiato il numeroSelettore ma non cambia il colore delle mani: | –

0

Stile materiale Android TimePicker con colori personalizzati di seguito, è possibile vedere http://www.zoftino.com/android-timepicker-example per l'utilizzo e gli stili di TimePicker.

<style name="MyAppThemeFour" parent="Theme.AppCompat.Light"> 
    <item name="android:timePickerDialogTheme">@style/MyTimePickerDialogStyle</item> 
</style> 

<style name="MyTimePickerDialogStyle" parent="@style/ThemeOverlay.AppCompat.Dialog.Alert"> 
<item name="showTitle">false</item> 
<item name="colorControlActivated">#ffd600</item> 
<item name="colorAccent">#b71c1c</item> 
<item name="android:textColorPrimary">#43a047</item> 
<item name="android:textColorSecondary">#f44336</item> 
</style> 

Android TimePicker material style custom color from zoftino.com

Problemi correlati