Android sdk日付ピッカーで日選択オプションを無効にしたい。簡単なxml構成が最適です。
カスタムの日付ピッカーを作成できる新しい日付ピッカーフレームワークをリリースしました。また、あなたが探しているような日付ピッカーの例もいくつか提供しました。うまくいきますように。
コードはここにあります: https://github.com/bendemboski/DateSlider
UPDATE 06/2014:このライブラリは2010年に開発され、2011年以降メンテナンスされていません。そのため、現在のところ古くなっている可能性があります。
リフレクションを使用してDatePickerインスタンスをハッキングすることは可能です。このようにして、DatePickerで日を表すNumberPickerインスタンスにアクセスできます。
datePicker = (DatePicker) findViewById(R.id.expiration_date);
try {
Field f[] = datePicker.getClass().getDeclaredFields();
for (Field field : f) {
if (field.getName().equals("mDayPicker")) {
field.setAccessible(true);
Object dayPicker = new Object();
dayPicker = field.get(datePicker);
((View) dayPicker).setVisibility(View.GONE);
}
}
} catch (SecurityException e) {
Log.d("ERROR", e.getMessage());
}
catch (IllegalArgumentException e) {
Log.d("ERROR", e.getMessage());
} catch (IllegalAccessException e) {
Log.d("ERROR", e.getMessage());
}
リフレクションと言えば、これはAndroid 4.4.2 SDKで機能します
"mDaySpinner"
代わりに
"mDayPicker"
最高の解決策だと思います
datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "Android")).setVisibility(View.GONE);
編集:以下のコメントのように、私はこの回答をもうフォローしません。
デフォルトの日付ピッカーではそれができないと思います。基本的なAndroid UI要素から作成する必要があります。しかし、その問題に行く代わりに、この見栄えの良いiPhone風のホイールなど、より優れたライブラリ要素を使用してみませんか。- http://code.google.com/p/Android-wheel/ まだ使用していませんが、使用する予定です!
これは2.2バージョンで正常に動作します。ただし、ダイアログのタイトルは変更されません。
for (Field datePickerDialogField : datePickerDialogFields) {
if (datePickerDialogField.getName().equals("mDatePicker")) {
datePickerDialogField.setAccessible(true);
DatePicker datePicker = (DatePicker) datePickerDialogField.get(datePickerDialog);
Field datePickerFields[] = datePickerDialogField.getType().getDeclaredFields();
for (Field datePickerField : datePickerFields) {
if ("mDayPicker".equals(datePickerField.getName())) {
datePickerField.setAccessible(true);
Object dayPicker = new Object();
dayPicker = datePickerField.get(datePicker);
((View) dayPicker).setVisibility(View.GONE);
}
}
}
}
隠れ日:
datePicker.findViewById(Resources.getSystem().getIdentifier("day", "id", "Android")).setVisibility(View.GONE);
&
月を非表示にする場合:
datePicker.findViewById(Resources.getSystem().getIdentifier("month", "id", "Android")).setVisibility(View.GONE);
https://github.com/SimonVT/Android-datepicker ウィジェットを使用して、バックポートされた互換性を確保し、曜日ピッカーを「削除」できます。
<net.simonvt.numberpicker.NumberPicker
Android:id="@+id/day"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginLeft="16dip"
Android:layout_marginRight="16dip"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:visibility="gone"
/>