我一直被一个日期选择器的问题困扰着,但似乎找不到任何解决方案。
我目前有一个DatePickerDialog,它非常适合我的需求,但我还需要能够隐藏/禁用天和月的字段(以便选择一个月或一年),除了实现自己的MonthPicker/yearPicker之外,我找不到任何解决方案。事实上,我不知道从哪里开始编写具有与默认样式相同的选择器。
如果您有自定义日期选择器的示例代码或任何更简单的想法来解决我的问题,我将不胜感激。
非常感谢。
hush
我一直被一个日期选择器的问题困扰着,但似乎找不到任何解决方案。
我目前有一个DatePickerDialog,它非常适合我的需求,但我还需要能够隐藏/禁用天和月的字段(以便选择一个月或一年),除了实现自己的MonthPicker/yearPicker之外,我找不到任何解决方案。事实上,我不知道从哪里开始编写具有与默认样式相同的选择器。
如果您有自定义日期选择器的示例代码或任何更简单的想法来解决我的问题,我将不胜感激。
非常感谢。
hush
我的想法是为安卓使用自定义日期选择器。在Google Code上,我找到了一个名为Android Wheel的开源项目。
从Google Code检出源代码后,您将找到几个示例,以便您可以轻松地按照您的要求自定义年份选择器。
蜂窝结构发生了一些变化。
ViewGroup group = (ViewGroup) findViewById(R.id.picker);
group = (ViewGroup) group.getChildAt(0);
group = (ViewGroup) group.getChildAt(0);
// 0:datepicker , 1:calendar
Toast.makeText(this, String.format("%s children", group.getChildCount()), Toast.LENGTH_SHORT).show();
try{
group.getChildAt(0).setVisibility(View.GONE);
// 0 for year, 1 for month, 2 for day
}catch(Exception e){
Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();
}
这有点hacky,但是如果您查看DatePicker的布局,您会看到它是一个包含3个子视图的FrameLayout。因此,我想隐藏年份并进行了以下更改。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewGroup group = (ViewGroup) findViewById(R.id.picker);
group = (ViewGroup) group.getChildAt(0);
Toast.makeText(this, String.format("%s children", group.getChildCount()), Toast.LENGTH_SHORT).show();
try{
group.getChildAt(2).setVisibility(View.GONE);
// 2 for year, 1 for day, 0 for month
}catch(Exception e){
Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();
}
}
这将获取选择器的帧布局,然后隐藏它的第三个子元素,即年份。希望这可以帮到你!