2010-08-12 3 views
10

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

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

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

спасибо

замять

+0

Попробуйте это, Вы можете начать отсюда, он имеет нормальный выбор вращателя и сложный вид пейджера салфетки http://viswanathl.in/2014/02/custom-datepicker-in-android/ –

ответ

7

Моя идея состоит в использовании пользовательских Date Picker для андроида. В Google Code, я нашел проект с открытым исходным кодом под названием Android Wheel

Android wheel for date time picker

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

+0

привет у вас есть исходный код этого колеса? – Dimitri

+0

@Nikita Вы можете найти в своем ответе ссылку на его репозиторий Google Code. – anticafe

+0

Можете ли вы дать мне ссылку, пожалуйста? – Dimitri

1

Это своего рода хакерство, но если вы посмотрите на макет для 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 початкоотделяющего, а затем прячет 3-го ребенка, который год. Надеюсь это поможет!

+0

Спасибо за идею. Хотя только год может быть спрятан успешно в целом, поскольку месячная и дневная позиция зависит от локали (месяц/день/год для США и день/месяц/год для Великобритании, например). – ernazm

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(); 
} 
Смежные вопросы