Úvod do skrývania klávesnice Android
Pri vývoji aplikácií pre Android sú chvíle, keď potrebujete programovo skryť softvérovú klávesnicu. Je to užitočné najmä vtedy, keď máte v rozložení UpraviťText a Tlačidlo a chcete, aby klávesnica po kliknutí na tlačidlo zmizla.
V tejto príručke preskúmame jednoduché a efektívne spôsoby dosiahnutia tejto funkcie. Ak budete postupovať podľa uvedených krokov, budete môcť vylepšiť používateľské prostredie vašej aplikácie efektívnou správou viditeľnosti klávesnice.
Príkaz | Popis |
---|---|
getSystemService | Načíta službu na úrovni systému podľa názvu; tu sa používa na získanie InputMethodManager na správu klávesnice. |
hideSoftInputFromWindow | Skryje softvérovú klávesnicu z okna, pričom ako parametre vezme token a príznaky. |
getCurrentFocus | Vráti aktuálne zaostrené zobrazenie v aktivite, ktoré sa používa na určenie, odkiaľ sa má klávesnica skryť. |
onClickListener | Nastaví spätné volanie, ktoré sa spustí po kliknutí na zobrazenie (napr. tlačidlo). |
dispatchTouchEvent | Zachytáva udalosti pohybu na dotykovej obrazovke pred ich odoslaním do okna, čo je užitočné pre vlastné ovládanie dotykom. |
windowToken | Vráti token, ktorý jedinečne identifikuje okno priradené k zobrazeniu, potrebný na skrytie klávesnice. |
Ako skryť klávesnicu Android
V príklade Java skript najskôr importuje potrebné triedy ako napr InputMethodManager, View, a EditText. The onCreate metóda nastaví rozloženie a inicializuje EditText a Button. Po kliknutí na tlačidlo sa zobrazí hideKeyboard sa nazýva metóda. Táto metóda načíta aktuálne zaostrené zobrazenie pomocou getCurrentFocusa ak je pohľad zaostrený, použije InputMethodManager na skrytie softvérovej klávesnice zavolaním hideSoftInputFromWindow. Tým sa klávesnica po kliknutí na tlačidlo efektívne zatvorí.
V príklade Kotlin je dosiahnutá podobná funkčnosť. Skript prepíše onCreate na nastavenie zobrazenia obsahu a inicializáciu EditText a Button. Poslucháč kliknutia na tlačidlo volá hideKeyboard metóda. Okrem toho, dispatchTouchEvent metóda je prepísaná, aby sa klávesnica pri dotyku vonku skryla. Táto metóda skontroluje, či je pohľad zaostrený, a skryje klávesnicu pomocou InputMethodManager. Tieto skripty zlepšujú používateľskú skúsenosť efektívnou správou viditeľnosti softvérovej klávesnice.
Programové zatvorenie softvérovej klávesnice Android
Java pre vývoj Androidu
import android.app.Activity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.editText);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideKeyboard();
}
});
}
private void hideKeyboard() {
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
}
Skryť klávesnicu pri dotyku vonku
Kotlin pre Android Development
import android.app.Activity
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import android.widget.Button
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val editText = findViewById<EditText>(R.id.editText)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener { hideKeyboard() }
}
private fun hideKeyboard() {
val view = this.currentFocus
view?.let { v ->
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(v.windowToken, 0)
}
}
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
if (currentFocus != null) {
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(currentFocus!!.windowToken, 0)
}
return super.dispatchTouchEvent(ev)
}
}
Pokročilé techniky na správu klávesnice Android
Ďalším dôležitým aspektom správy softvérovej klávesnice Android je manipulácia s jej viditeľnosťou v reakcii na rôzne interakcie a konfigurácie používateľov. Môžete napríklad chcieť, aby sa klávesnica automaticky zobrazila, keď EditText získa zameranie alebo zabezpečí, že sa pri navigácii medzi rôznymi komponentmi používateľského rozhrania skryje. To sa dá dosiahnuť pomocou InputMethodManager spolu so spätnými volaniami počas životného cyklu ako napr onResume a onPause.
Okrem toho môžete ovládať správanie klávesnice úpravou android:windowSoftInputMode atribút v súbore manifestu vašej aktivity. Tento atribút vám umožňuje určiť, či má klávesnica upraviť rozloženie aktivity alebo zostať skrytá, kým sa o to výslovne nepožiada. Využitie týchto konfigurácií môže výrazne zlepšiť používateľskú skúsenosť poskytnutím intuitívnejšieho a pohotovejšieho rozhrania.
Bežné otázky týkajúce sa skrytia klávesnice Android
- Ako skryjem klávesnicu, keď EditText stráca koncentráciu?
- Môžete prepísať onFocusChange poslucháčom EditText a zavolajte InputMethodManager.hideSoftInputFromWindow.
- Môžem automaticky zobraziť klávesnicu, keď EditText získa pozornosť?
- Áno, použiť InputMethodManager.showSoftInput v onFocusChange poslucháča.
- Ako môžem skryť klávesnicu vo fragmente?
- Zavolajte InputMethodManager.hideSoftInputFromWindow v kontexte pohľadu fragmentu.
- Čo je android:windowSoftInputMode používa?
- Určuje, ako klávesnica interaguje s rozložením aktivity, ako je napríklad zmena veľkosti alebo ponechanie skryté.
- Ako skryjem klávesnicu pri dotyku mimo EditText?
- Prepísať dispatchTouchEvent vo svojej aktivite, aby ste skontrolovali dotykové udalosti mimo EditText.
- Môžem prinútiť klávesnicu, aby zostala skrytá?
- Áno, nastavením android:windowSoftInputMode do stateHidden v manifeste.
- Ako zistím, či je klávesnica momentálne viditeľná?
- Použite getWindowVisibleDisplayFrame na porovnanie viditeľnej oblasti obrazovky s výškou koreňového zobrazenia.
- Je možné skryť klávesnicu programovo kliknutím na tlačidlo?
- Áno, zavolajte InputMethodManager.hideSoftInputFromWindow v tlačidlách onClickListener.
Kľúčové poznatky o skrytí klávesnice Android
Na záver, správa softvérovej klávesnice Android je rozhodujúca pre zlepšenie používateľského zážitku vo vašej aplikácii. Používaním InputMethodManager, môžete programovo skryť alebo zobraziť klávesnicu na základe interakcií používateľa, ako sú kliknutia na tlačidlá alebo dotykové udalosti. Okrem toho, konfigurácia android:windowSoftInputMode atribút v súbore manifestu vám umožňuje presnejšie ovládať správanie klávesnice. Implementácia týchto metód zaisťuje, že prítomnosť klávesnice nezasahuje do použiteľnosti aplikácie a poskytuje používateľom hladké a intuitívne rozhranie.