自定义DatePicker

时间:2010-08-12 09:26:32

标签: android datepicker

我几次遇到DatePicker问题,我似乎无法找到任何解决方案。

我目前有一个DatePickerDialog非常适合我的需求我也需要能够隐藏/禁用Day和Month字段(为了选择一个月或一年),我找不到任何解决方案除了实现我自己的MonthPicker / yearPicker。事实是我真的不知道从哪里开始编写一个与默认样式相同的选择器。

如果你们中的任何人有自定义日期picjer的示例代码或任何更简单的想法来应对我的问题,我会很高兴。

非常感谢

封口

3 个答案:

答案 0 :(得分:7)

我的想法是为Android使用自定义日期选择器。在Google Code中,我找到了一个名为Android Wheel

的开源项目

Android wheel for date time picker

结帐来自Google代码的源代码后,您会找到几个示例,以便您可以根据需要轻松自定义年份选择器。

答案 1 :(得分:3)

蜂窝有一些变化。

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();
}

答案 2 :(得分:1)

它有点hacky,但是如果你看一下DatePicker的布局,你可以看到它的FrameLayout包含3个子视图。所以我想要隐藏一年并做到这一点。

    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();
    }
}

这将获取选择器的framelayout,然后隐藏其第三个孩子,即年份。希望这有帮助!