在使用官方提供的datepicker控件选择日期的时候,它提供了两种方式。spinner和calendar。
一个是类似spinner的上下滚动的选择,一个是像日历一样选择。各有优点。
一:
方式的切换
在代码和xml中使用属性来进行切换。
calendarViewShown=true or false,
spinnersShown= true or false;
如果这两个的设置都没有起到预期的效果,那么你需要更改datepicker的选取模式。
datePickerMode= spinner or calendar;
这样便可以显示需要的了。
二:
有时候需要只显示年和月,或者有其他的需求
这里提供一种方式,spinner模式下,是使用3个子控件来显示可选项的,年月日. 可以设置不需要的变成gone的形式。
"2" 所在的位置可以发生变化,0 ,1。
看设置应该是按年月日的顺序,对应 0 ,1,2。(和下面的xml貌似顺序不一致,最好依据测试程序来定)。
((ViewGroup) ((ViewGroup) datePicker.getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
两个效果,外加 只显示年和月。 其他的显示根据需求进行设置,当然了也可以自己用spinner来自定义
看源码的xml
<?xml version="1.0" encoding="utf-8"?> <!-- ** ** Copyright 2007, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. */ --> <!-- Layout of date picker--> <!-- Warning: everything within the "pickers" layout is removed and re-ordered depending on the date format selected by the user. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center_horizontal" android:orientation="horizontal" android:gravity="center"> <LinearLayout android:id="@+id/pickers" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal" android:gravity="center"> <!-- Month --> <NumberPicker android:id="@+id/month" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="1dip" android:layout_marginEnd="1dip" android:focusable="true" android:focusableInTouchMode="true" /> <!-- Day --> <NumberPicker android:id="@+id/day" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="1dip" android:layout_marginEnd="1dip" android:focusable="true" android:focusableInTouchMode="true" /> <!-- Year --> <NumberPicker android:id="@+id/year" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="1dip" android:layout_marginEnd="1dip" android:focusable="true" android:focusableInTouchMode="true" /> </LinearLayout> <!-- calendar view --> <CalendarView android:id="@+id/calendar_view" android:layout_width="245dip" android:layout_height="280dip" android:layout_marginStart="44dip" android:layout_weight="1" android:focusable="true" android:focusableInTouchMode="true" android:visibility="gone" /> </LinearLayout>