自定义日期选择器

10

我一直被一个日期选择器的问题困扰着,但似乎找不到任何解决方案。

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

如果您有自定义日期选择器的示例代码或任何更简单的想法来解决我的问题,我将不胜感激。

非常感谢。

hush


尝试一下,你可以从这里开始,它具有普通的Spinner选择和复杂的ViewPager滑动功能。http://viswanathl.in/2014/02/custom-datepicker-in-android/ - Viswanath Lekshmanan
3个回答

7

我的想法是为安卓使用自定义日期选择器。在Google Code上,我找到了一个名为Android Wheel的开源项目。

Android wheel for date time picker

从Google Code检出源代码后,您将找到几个示例,以便您可以轻松地按照您的要求自定义年份选择器。


@Nikita,你可以在我的回答中找到他的Google Code存储库链接。 - anticafe
请问您能给我链接吗? - Dimitri
我找不到任何来源或示例。 - Dimitri
嗨,我也想知道如何使用轮式日期选择器。但是链接只包含图像。我们在哪里可以找到源代码? - ajey

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

1

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

这将获取选择器的帧布局,然后隐藏它的第三个子元素,即年份。希望这可以帮到你!


谢谢您的想法。虽然通常只有年份可以成功隐藏,因为月份和日期的位置取决于语言环境(例如,美国是月/日/年,英国是日/月/年)。 - ernazm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接