Timepicker Dialog始终是AM / PM

时间:2017-06-24 06:36:57

标签: java android timepickerdialog

我在我的应用中创建了两个timepickerdialog, 但是我希望我的一个时间戳对话框只能显示“AM”, 而另一个总能显示“PM”, 我该怎么办?

这是我的时间选择器

http://ppt.cc/xGspr

1 个答案:

答案 0 :(得分:0)

虽然我不会这样做,因为它不是一个好方法,但我认为没有比这更好的方法,只是至少给出一种方法,这可以通过迭代来实现TimePicker下的观看次数,并将ResourceNameandroid:id/am_labelandroid:id/pm_label进行比较。

写了一个方法,将TimePicker设置为AM或PM,如果amtrue,则设置为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 TimePicker

相关问题