Есть компонент:
и если зайти в приложение, то в этом поле мигает курсор, и появляется клавиатура.
как можно сделать чтоб это происходило только тогда, когда пользователь нажал на это поле ввода? и чтоб если после того как появилась клавиатура, и пользователь коснулся в любой области экрана(за пределами 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();
}
});
}
}
Комментариев нет:
Отправить комментарий