我想在点击按钮时禁用所有输入控件(例如:TextEdit,Spinners).
例如:当用户在文本字段中输入值并单击"提交"按钮时,我想要禁用所有输入控件并隐藏键盘.
可以添加活动顶部的叠加视图以防止用户触摸屏幕,但这不是一个选项,因为我想禁用所有输入组件并隐藏输入控件.
迭代容器布局视图,并根据它们实例的窗口小部件处理视图.例如,如果要隐藏全部Button并禁用所有EditText:
for(int i=0; i < layout.getChildCount(); i++) {
View v = layout.childAt(i);
if (v instanceof Button) {
v.setVisibility(View.GONE); //Or View.INVISIBLE to keep its bounds
}else
if (v instanceof EditText) {
((EditText)v).setEnabled(false);
}
}
Run Code Online (Sandbox Code Playgroud)
当然,如果您想要添加其他属性,例如使其无法点击,或者只是从前面的代码中将它们添加到通讯方中.
然后隐藏键盘:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
一个更干净的方法(如果你知道视图的id)是将它们存储在int[]循环中而不是从布局中获取al children视图,但是结果如此,它们几乎就是相同.
尝试使用editText.setEnabled(false);
setEnabled(false);只需为按钮内的所有控件设置单击即可。
buttonOK.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
editText.setEnabled(false);
spinner.setEnabled(false);
.......
// here you can disable all InputControls.
}
});
Run Code Online (Sandbox Code Playgroud)