我的布局中有一个TimePicker。 我需要通过单击按钮或事件来禁用TimePicker(用户无法更改小时或分钟)。
如何禁用它?
以下代码段不起作用
TimePicker tp = (...)findViewById(...);
for(int i = 0; i< tp.getChildCount(); i++)
((View)tp.getChildAt(i)).setEnabled(false);
答案 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);
}
}
});