Как отключить все элементы управления в действии в Android?

Я хочу отключить все элементы управления вводом (например, 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); } } 

Конечно, если вы хотите добавить другие свойства, например, сделать его не кликабельным или тем, что вы просто добавили в корреспондент, если из предыдущего кода.

Затем, чтобы скрыть клавиатуру :

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

Более чистый способ сделать это (если вы знаете идентификаторы представлений) заключается в том, чтобы хранить их в int[] и в цикле, вместо того, чтобы получать изображения из дочерних элементов из макета, но по мере их достижения они почти то же.

Попробуйте использовать 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. } }); 

Возьмем случай TextView. Затем сделайте следующее:

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

Это отключит TextView. Аналогично для остальных согласно требованию.

Intereting Posts