Skupiamy się na wybieraniu komponentów interfejsu użytkownika, gdy używasz czegoś innego niż dotyk (np. Pada kierunkowego, klawiatura itp.). Każdy widok może otrzymać fokus, chociaż niektóre nie są domyślnie ustawiane. (Możesz setFocusable(true)
ustawić ostrość widoku i wymusić na nim skupienie requestFocus()
).
Należy jednak pamiętać, że w trybie dotykowym ostrość jest wyłączona . Jeśli więc używasz palców, programowa zmiana fokusu nic nie robi. Wyjątkiem są widoki, które otrzymują dane wejściowe z edytora danych wejściowych. A EditText
jest takim przykładem. W tej specjalnej sytuacji setFocusableInTouchMode(true)
jest używany, aby dać klawiaturze programowej znać, gdzie wysłać dane wejściowe. EditText
Ma to ustawienie domyślne. Miękka klawiatura pojawi się automatycznie.
Jeśli nie chcesz, aby klawiatura programowa pojawiała się automatycznie, możesz tymczasowo ją wyłączyć, jak zauważył @abeljus:
InputMethodManager inputManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
EditText
Jednak po kliknięciu przez użytkownika klawiatura nadal powinna być wyświetlana.
Czytaj dalej: