Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Как сделать EditText не активным по умолчанию

Есть компонент:

и если зайти в приложение, то в этом поле мигает курсор, и появляется клавиатура. как можно сделать чтоб это происходило только тогда, когда пользователь нажал на это поле ввода? и чтоб если после того как появилась клавиатура, и пользователь коснулся в любой области экрана(за пределами EditText) клавиатура и курсор в поле ввода чтоб пропали.


Ответ

Для получения желаемого результата вам нужно сделать несколько вещей. Во первых в разметке корневой layout использовать для перехватa события нажатия на экран и скрытия клавиатуры. Понадобиться id-шник


В классе соответственно для FrameLayout-а и EditText-а прописываете логику включения/отключения EditText-а следующим образом:
YourActivity extends Activity {
private EditText etFamil; private FrameLayout interceptor;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
interceptor = (FrameLayout) findViewById(R.id.touch_interceptor) etFamil = (EditText) findViewById(R.id.famil)
interceptor.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); etFamil.setFocusable(false); } return v.performClick(); } }); etFamil.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { v.setFocusableInTouchMode(true); } return v.performClick(); } }); }
}

Комментариев нет:

Отправить комментарий