如何在Android中禁用Timepicker

时间:2013-01-11 19:12:15

标签: android timepicker

我的布局中有一个TimePicker。 我需要通过单击按钮或事件来禁用TimePicker(用户无法更改小时或分钟)。

如何禁用它?

以下代码段不起作用

TimePicker tp = (...)findViewById(...);

  for(int i = 0; i< tp.getChildCount(); i++)
        ((View)tp.getChildAt(i)).setEnabled(false);

3 个答案:

答案 0 :(得分:0)

这不是一个好主意,但如果TimePicker.setEnabled(false)不起作用,你可以尝试递归禁用;

private void disable(ViewGroup vg)
{
    for (int i = 0; i < vg.getChildCount(); ++i)
    {
        View v = vg.getChildAt(i);
        if (v instanceof ViewGroup)
        {
            disable((ViewGroup)v);
        }
        else
        {
            v.setEnabled(false);
        }
    }
}

只需将TimePicker传递给此方法。

答案 1 :(得分:0)

我找到了解决方案:

 for(int i = 0; i < timePickerStartingHour.getChildCount(); i++) {
     Log.i("MyApp", timePickerStartingHour.getChildAt(i).getClass().getName()); //prints LinearLayout

     for (int j = 0; j < ((LinearLayout)timePickerStartingHour.getChildAt(i)).getChildCount(); j++ ) {
         ((LinearLayout)timePickerStartingHour.getChildAt(i)).getChildAt(j).setEnabled(false);
     }

 }

TimePicker只有一个子线程是LinearLayout,所以你不能禁用它,你必须禁用LinearLayout内的视图

答案 2 :(得分:0)

    sButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (sButton.isChecked()) {

                timePicker.setEnabled(true);
                timePicker.setIs24HourView(true);
                displayTime.setText(currentTime());
                changeTime.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        displayTime.setText(currentTime());
                    }
                });


            } else {
                timePicker.setEnabled(false);

            }
        }
    });