Диалог выбора времени всегда AM/PM

Я создаю два timepickerdialog в своем приложении, но я хочу, чтобы в одном из диалогового окна timepicker мог отображаться только "AM", а в другом - "PM". Как я могу это сделать?

Это мой таймер

http://ppt.cc/xGspr

1 ответ

Хотя я бы не поступил так, как я опишу, так как это не очень хороший способ, я не думаю, что есть лучший способ, чем этот, и просто дать хотя бы один способ, этого можно достичь, просматривая представления в TimePicker и сравнивая их ResourceNameс android:id/am_label а также android:id/pm_label,

Написал метод для установки TimePicker в AM или PM, если am является true, устанавливает в AM, и в PM в противном случае.

private void setMidday(View v, boolean am) {
    if (!(v instanceof ViewGroup)) {
        System.out.println(v.getResources().getResourceName(v.getId())); //You can check the resourcenames by this one
        if (am == true) { //disable PM set to AM
            if (v.getResources().getResourceName(v.getId()).equals("android:id/pm_label")) {
                v.setVisibility(View.GONE);
            }
            if (v.getResources().getResourceName(v.getId()).equals("android:id/am_label")) {
                v.performClick();
                v.setClickable(false);
            }
        }
        else { //disable AM set to PM
            if (v.getResources().getResourceName(v.getId()).equals("android:id/pm_label")) {
                v.performClick();
                v.setClickable(false);
            }
            if (v.getResources().getResourceName(v.getId()).equals("android:id/am_label")) {
                v.setVisibility(View.GONE);
            }
        }
        return;
    }
    ViewGroup viewGroup = (ViewGroup) v;
    for (int i = 0; i < viewGroup.getChildCount(); i++) {
        View child = viewGroup.getChildAt(i);
        setMidday(child, am);
    }
}

Также убрана возможность нажатия на метки AM и PM после скрытия другой, так как бессмысленно нажимать на уже нажатую.

Вы можете использовать этот метод, сначала получив первого ребенка вашего TimePicker объект, а затем вызвать setMidday, чтобы установить TimePicker в AM или PM.

View firstChild = timePicker.getChildAt(0);
setMidday(firstChild, true); //set it to AM and disable PM
//or
setMidday(firstChild, false); //set it to PM and disable AM

Установка TimePicker в PM PM TimePicker

Установка TimePicker в AM AM TimePicker

Другие вопросы по тегам