如何在android中的活动中禁用所有输入控件?

时间:2014-02-21 12:40:48

标签: android

我想在点击按钮时禁用所有输入控件(例如:TextEdit,Spinners)。

例如:当用户在文本字段中输入值并单击“提交”按钮时,我想要禁用所有输入控件并隐藏键盘。

可以添加活动顶部的叠加视图以防止用户触摸屏幕,但这不是一个选项,因为我想禁用所有输入组件并隐藏输入控件。

3 个答案:

答案 0 :(得分:6)

迭代容器布局视图,并根据它们实例的窗口小部件处理视图。例如,如果您想要隐藏所有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);
    }
}

当然,如果您想添加其他属性,例如使其无法点击,或者只是根据前面的代码将它们添加到通讯记录中。

然后到hide the keyboard

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

更简洁的方法(如果您知道视图的ID)是将它们存储在int[]中并将循环存储在其中,而不是从布局中获取子视图,但结果是他们几乎是一样的。

答案 1 :(得分:0)

尝试使用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.
        }
    });

答案 2 :(得分:0)

让我们以TextView为例。然后执行以下操作:

textView.setClickable(false);
textView.setFocusable(false);
textView.setFocusableInTouchMode(false);

这将禁用TextView。根据要求,其他人也是如此。