DatePicker のあの部品は標準で使えない

概要

Android の標準 API のGUI部品に DatePicker というものがある。こういうやつ↓

image 

このうち、+と?のボタンで数字をサンドイッチしている部分だけを単独で使いたかったのだけど、いろいろ調べた挙句、標準 API では使えないっぽいという話。


ライブラリを調べたけど見つからず

最初は、こんな便利そうなコンポーネントなのだから、android.widget パッケージのどこかにあるんと違うかーと思ったのだけど、見つからない。検索しても見つからない。

ちなみに、こういうGUI部品は、一般的にはスピンボタン、あるいはSpinner などと呼ばれるべきものらしい。android.widget.Spinner とはまた違うのかな。

image ←スピンボタンの例(Windows の ActiveX)

ライブラリのソースを調べて被疑者確保

どうやらライブラリの中にはなさそうだということで、DatePicker のソースをあたることにした。

で、メンバに NumberPicker という、明らかにそれっぽいクラスを発見。

package android.widget;
...
import android.widget.NumberPicker;
import android.widget.NumberPicker.OnChangedListener;
...
@Widget
public class DatePicker extends FrameLayout {
...
    /* UI Components */
    private final NumberPicker mDayPicker;
    private final NumberPicker mMonthPicker;
    private final NumberPicker mYearPicker;
...

ところが、SDK のライブラリを探しても、android.widget.NumberPicker なんてクラスは見当たらない。なんでだー?

SDK とオープンソースのパッケージではライブラリの構造が違うのか??

NumberPicker で検索したら、同じように使えねーと言っている人が多数散見せられた。それらによると、NumberPicker は、 com.android.internal.widget.NumberPicker.java とかいうところにあって、インターナル(=public でないクラス?)のため、使えないらしい。

NumberPiker を使う方法

ライブラリの NumberPicker を直接扱うことはできなさそうだけど、ソースが公開されている以上、同じものを作ることはできそう。

実際、公開ソースをもとにして?、NumberPicker の関連リソース一式を公開している人もいるので、それをそのまま使ってしまう方法も考えられる。

あるいは面倒だけど自分で作るか。標準ライブラリで使えるようにしてくれればいいのにね。

参考文献

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>