Пользовательский DatePicker

Я застрял в проблеме DatePicker для нескольких, и я не могу найти никакого решения.

В настоящее время у меня есть DatePickerDialog, который хорошо подходит для моих нужд. YET. Мне также нужно иметь возможность скрывать/отключать поле "День и месяц" (чтобы выбрать месяц или год), я не могу найти какое-либо решение за исключением реализации моего собственного месяцаPicker/yearPicker. факт, я не знаю, с чего начать писать сборщик, который имеет тот же стиль, что и стандартный.

Я был бы рад, если бы у кого-то из вас был пример кода пользовательской даты picjer или любой более простой идеи, чтобы справиться с моей проблемой.

Спасибо большое

Hush

Ответ 1

В моей идее используется пользовательский механизм выбора даты для android. В Google Code я нашел проект с открытым исходным кодом под названием Android Wheel

Android wheel for date time picker

После оформления исходного кода из кода Google вы найдете несколько примеров, чтобы вы могли легко настроить год-подборщик по своему усмотрению.

Ответ 2

Есть некоторые изменения в сотах.

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

Ответ 3

Его любопытный хакер, но если вы посмотрите на макет для 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();
    }
}

Это получает расстановку кадров сборщика, а затем скрывает третьего ребенка, который является годом. Надеюсь, это поможет!