Спиннер для Android с функцией выбора даты, например приложение Google Calendar - PullRequest
35 голосов
/ 23 февраля 2012

Я пытаюсь получить текстовое поле, которое выглядит как счетчик, чтобы активировать диалог выбора даты. Это делается как в приложении Google Calendar, так и в приложении Contacts (для даты рождения) в ICS. Нужно ли мне использовать счетчик, и если да, то как мне изменить его входной вид, чтобы он выбирал дату? Или, если нет, как я могу получить в текстовом представлении маленький треугольник, который обычно указывает на счетчик?

Ответы [ 4 ]

61 голосов
/ 04 июня 2012

Комментарий Тэддингтона к его ответу - на самом деле правильный подход. Вам нужно создать текстовое представление и применить стиль

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

Затем вы можете создать прослушиватель щелчков в текстовом представлении и использовать его для открытия DatePickerDialog. Это можно сделать так, как показано здесь: https://stackoverflow.com/a/8127571/332738 (Если вы следуете примеру, не забудьте добавить конструктор по умолчанию к DatePickerDialogFragment, чтобы ваше приложение не зависало при повороте)

21 голосов
/ 23 декабря 2012

Я не знаю, нужно ли вам это по-прежнему. Но в приложении «Контакты» это достигается следующим образом:

<Button
    ...
    style="?android:attr/spinnerStyle"
    ... />

Это должно работать на всех версиях Android, так как оно доступно начиная с уровня API 1: http://developer.android.com/reference/android/R.attr.html#spinnerStyle

8 голосов
/ 23 февраля 2012

Я не уверен, что это то, о чем вы спрашиваете, но вы должны быть в состоянии следовать учебнику Date Picker на сайте разработчика Android.

Кроме того, DatePicker и DatePickerDialog классы, возможно, стоит посмотреть.

0 голосов
/ 07 апреля 2016

Я бы предпочел ниже тему для Spinner, как контакты Google.

<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>
...