Programiškai paslėpkite „Android“ minkštąją klaviatūrą spustelėdami ir paliesdami lauke

Programiškai paslėpkite „Android“ minkštąją klaviatūrą spustelėdami ir paliesdami lauke
Java

„Android“ minkštosios klaviatūros valdymas

Norint dirbti su „Android“ programomis, dažnai reikia naudotojo įvesties naudojant virtualią klaviatūrą. Tais atvejais, kai išdėstyme yra EditText ir Mygtukas, labai svarbu efektyviai valdyti klaviatūrą. Tiksliau, įvedę tekstą ir spustelėję mygtuką, galbūt norėsite paslėpti klaviatūrą, kad pagerintumėte vartotojo patirtį.

Šiame straipsnyje bus pateiktas paprastas ir praktiškas pavyzdys, kaip programiškai uždaryti „Android“ programinę klaviatūrą, kai vartotojas sąveikauja su sritimis už klaviatūros ribų. Vykdydami nurodytus veiksmus galite pagerinti „Android“ programos naudojimo patogumą ir sąsają.

komandą apibūdinimas
getSystemService Nuskaito sistemos lygio paslaugą pagal pavadinimą, pvz., InputMethodManager, skirtą įvesties metodams tvarkyti.
hideSoftInputFromWindow Prašo paslėpti minkštosios klaviatūros langą, kuris šiuo metu priima įvestį.
getWindowToken Grąžina su vaizdu susietą lango prieigos raktą, reikalingą klaviatūrai paslėpti.
onTouchEvent Tvarko jutiklinio ekrano judesio įvykius, čia naudojamas klaviatūrai paslėpti palietus lauke.
findViewById Suranda ir grąžina rodinį su nurodytu ID, naudojamą UI elementams, pvz., EditText ir Button, nuorodai.
setOnClickListener Nustatomas atgalinis skambutis, kuris bus iškviestas spustelėjus rodinį ir naudojamas klaviatūros slėpimui suaktyvinti.

Įgyvendinimo supratimas

Pateikti scenarijai parodo, kaip programiškai paslėpti „Android“ programinę klaviatūrą sąveikaujant su vartotojo sąsaja, ypač įvedus tekstą EditText lauką ir spustelėdami a Button. „Java“ ir „Kotlin“ pavyzdžiuose naudojami keli pagrindiniai „Android“ komponentai ir metodai. Abu scenarijai pradedami importuojant būtinas klases, tokias kaip Activity, Context, InputMethodManagerir įvairūs vartotojo sąsajos komponentai. Viduje onCreate metodas, findViewById naudojamas susieti EditText ir Button nuo maketo iki kodo. The setOnClickListener Tada ant mygtuko nustatomas metodas, kad suaktyvintų hideKeyboard funkcija spustelėjus.

Abiejuose įgyvendinimuose hideKeyboard funkcija naudoja getSystemService atgauti InputMethodManager paslauga. Metodas hideSoftInputFromWindow tada vadinamas su getWindowTokenEditText norėdami paslėpti minkštąją klaviatūrą. Be to, onTouchEvent Metodas nepaisomas siekiant užtikrinti, kad klaviatūra būtų paslėpta, kai vartotojas paliečia už įvesties lauko ribų. Šis metodas pagerina vartotojo patirtį, nes neleidžia klaviatūrai be reikalo trukdyti matyti. Naudodami šiuos metodus ir tinkamai tvarkydami jutiklinius įvykius, scenarijai efektyviai valdo minkštosios klaviatūros elgseną „Android“ programoje.

„Android“ minkštosios klaviatūros paslėpimas spustelėjus ir paliesjus už įvesties lauko ribų

„Java“ naudojimas kuriant „Android“.

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends Activity {
    private EditText editText;
    private Button button;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        editText = findViewById(R.id.editText);
        button = findViewById(R.id.button);
 
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                hideKeyboard();
            }
        });
    }
 
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        hideKeyboard();
        return super.onTouchEvent(event);
    }
 
    private void hideKeyboard() {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }
}

Minkštos klaviatūros atleidimo tvarkymas „Android“ naudojant „Kotlin“.

„Android“ programų kūrimui naudoja Kotliną

import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
 
class MainActivity : Activity() {
    private lateinit var editText: EditText
    private lateinit var button: Button
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        editText = findViewById(R.id.editText)
        button = findViewById(R.id.button)
 
        button.setOnClickListener { hideKeyboard() }
    }
 
    override fun onTouchEvent(event: MotionEvent): Boolean {
        hideKeyboard()
        return super.onTouchEvent(event)
    }
 
    private fun hideKeyboard() {
        val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(editText.windowToken, 0)
    }
}

Pažangių klaviatūros valdymo metodų tyrinėjimas

Be pagrindinių „Android“ minkštosios klaviatūros slėpimo metodų, kūrėjai gali įdiegti pažangesnius metodus, kad pagerintų vartotojo patirtį. Vienas iš tokių metodų apima naudojimą TouchListeners keliuose vartotojo sąsajos komponentuose, kad būtų galima aptikti prisilietimo įvykius ir atitinkamai paslėpti klaviatūrą. Šis metodas užtikrina, kad klaviatūra būtų paslėpta, kai vartotojas sąveikauja su bet kuria ekrano dalimi už jos ribų EditText. Be to, klaviatūros matomumo valdymas gali būti derinamas su fokusavimo logika, kai dėmesys nukreipiamas nuo EditText į kitą komponentą, raginant klaviatūrą automatiškai paslėpti.

Kitas būdas yra naudoti View.OnFocusChangeListener ant EditText. Šis klausytojas gali aptikti, kada EditText netenka dėmesio ir vėliau paslėpti klaviatūrą. Šis metodas ypač naudingas formose arba duomenų įvedimo programose, kuriose naudojami keli įvesties laukai. Be to, norėdami užtikrinti sklandesnę vartotojo patirtį, kūrėjai gali naudoti SoftKeyboardStateWatcher, tinkintas diegimas, kuris seka klaviatūros matomumo būsenos pokyčius ir atitinkamai reaguoja. Integruodami tokias pažangias technologijas, kūrėjai gali sukurti intuityvesnes ir patogesnes Android programas.

Dažnai užduodami klausimai apie „Android“ minkštosios klaviatūros valdymą

  1. Kaip nustatyti, kada klaviatūra rodoma arba paslėpta?
  2. Galite naudoti a SoftKeyboardStateWatcher stebėti klaviatūros matomumo pokyčius.
  3. Ar galima automatiškai paslėpti klaviatūrą, kai vartotojas slenka?
  4. Taip, galite įgyvendinti a OnScrollListener slinkties rodinyje, kad paslėptumėte klaviatūrą slinkimo metu.
  5. Ar galiu programiškai rodyti klaviatūrą, kai an EditText yra susikaupęs?
  6. Taip, naudoti InputMethodManager.showSoftInput kad būtų rodoma klaviatūra, kai EditText įgauna dėmesį.
  7. Kaip paslėpti klaviatūrą, kai vartotojas paspaudžia grįžimo mygtuką?
  8. Nepaisyti onBackPressed metodą ir paslėpkite klaviatūrą naudodami InputMethodManager.
  9. Ar galiu tinkinti klaviatūros išdėstymą?
  10. Taip, „Android“ leidžia pasirinktinius klaviatūros išdėstymus InputMethodService.
  11. Koks yra geriausias būdas paslėpti klaviatūrą fragmente?
  12. Naudokite getActivity().getSystemService gauti InputMethodManager fragmente.
  13. Kaip galiu paslėpti klaviatūrą perjungiant fragmentus?
  14. Įgyvendinti a FragmentTransaction su klausytoju, kad perjungimo metu paslėptumėte klaviatūrą.
  15. Ar įmanoma animuoti klaviatūros slėpimą?
  16. Taip, galite animuoti rodinį, kuriame yra EditText sukurti sklandų slėpimosi efektą.

Pagrindinių dalykų apibendrinimas

Kuriant intuityvias programas, labai svarbu efektyviai valdyti „Android“ minkštąją klaviatūrą. Naudodami getSystemService norėdami gauti InputMethodManager ir hideSoftInputFromWindow klaviatūrai paslėpti, kūrėjai gali valdyti, kada klaviatūra pasirodo ir dingsta. Palietus ir spustelėjus klausytojus, šis valdymas dar labiau patobulintas, užtikrinant, kad klaviatūra tinkamai pasislėptų sąveikaujant su kitais vartotojo sąsajos elementais. Šie metodai pagerina vartotojo patirtį, neleisdami klaviatūrai trukdyti svarbiam turiniui ar vartotojo sąsajos elementams.