web-dev-qa-db-ja.com

Android Google Calendarアプリのような日付ピッカー付きのスピナー

日付選択ダイアログをアクティブにするスピナーのようなテキストボックスを取得しようとしています。これは、ICSのGoogleカレンダーアプリと連絡先アプリ(生年月日用)の両方で行われます。スピナーを使用する必要がありますか?その場合、入力ビューを日付ピッカーに変更するにはどうすればよいですか?そうでない場合、通常はスピナーを示す小さな三角形をテキストビューに表示するにはどうすればよいですか?

35
Dash

彼の答えに対するTwaddingtonのコメントは、実際には正しいアプローチです。必要なのは、テキストビューを作成してスタイルを適用することです

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

次に、テキストビューでクリックリスナーを作成し、それを使用してDatePickerDialogを開きます。これは次のように実現できます: https://stackoverflow.com/a/8127571/332738 (例に従っている場合は、必ずアプリが回転時にクラッシュしないように、デフォルトのコンストラクタはDatePickerDialogFragmentに設定されています)

61
codinguser

まだこれが必要かどうかはわかりません。ただし、連絡先アプリでは、次のようにして実現されます。

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

これは、APIレベル1以降で利用可能なすべてのAndroidバージョンで動作するはずです。 http://developer.Android.com/reference/Android/R.attr.html# spinnerStyle

21
Scirocco

これがあなたが求めているものかどうかはわかりませんが、Android開発者のウェブサイトで Date Picker tutorial に従うことができるはずです。

また、 DatePicker および DatePickerDialog クラスは一見の価値があります。

8
twaddington

Googleの連絡先のようなSpinnerのテーマを以下に示します。

<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