web-dev-qa-db-fra.com

Android spinner avec le sélecteur de date, comme l'application Google Calendar

J'essaie d'obtenir une zone de texte qui ressemble à une roulette pour activer une boîte de dialogue de sélection de date. Cette opération est effectuée à la fois dans l'application Google Agenda et dans l'application Contacts (pour la date de naissance) sur ICS. Dois-je utiliser un compteur, et si c'est le cas, comment puis-je changer sa vue d'entrée pour qu'elle soit un sélecteur de date? Ou si non, comment puis-je obtenir une vue de texte pour avoir le petit triangle qui indique généralement un spinner?

34
Dash

Le commentaire de Twaddington sur sa réponse est en fait la bonne approche. Ce dont vous avez besoin est de créer une vue de texte et d'appliquer le style 

style="@Android:style/Widget.DeviceDefault.Light.Spinner"

Vous pouvez ensuite créer un écouteur de clic sur la vue texte et l'utiliser pour ouvrir un DatePickerDialog. Pour ce faire, procédez comme suit: https://stackoverflow.com/a/8127571/332738 (Si vous suivez l'exemple, pensez à ajouter un constructeur par défaut à DatePickerDialogFragment pour que votre application ne se bloque pas en rotation)

61
codinguser

Je ne sais pas si c'est ce que vous demandez, mais vous devriez pouvoir suivre le didacticiel Date Picker sur le site Web du développeur Android.

En outre, les classes DatePicker et DatePickerDialog pourraient valoir un coup d'œil.

8
twaddington

Je préférerais que le thème ci-dessous pour Spinner soit google contacts.

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="Android:spinnerStyle">@style/AppTheme.Form.Spinner</item>
        <item name="Android:spinnerItemStyle">@style/AppTheme.Form.Spinner.Item</item>
    </style>

    <!-- Spinner Styles -->
    <style name="AppTheme.Form.Spinner" parent="Widget.AppCompat.Spinner">
        <item name="Android:paddingRight">0dp</item>
        <item name="Android:paddingEnd">0dp</item>
    </style>
    <style name="AppTheme.Form.Spinner.Item" parent="Widget.AppCompat.EditText">
        <item name="Android:clickable">false</item>
    </style>
</resources>
0
Dipen Dedania