„Android“ klaviatūros slėpimo įvadas
Kuriant Android programas, kartais reikia programiškai paslėpti minkštąją klaviatūrą. Tai ypač naudinga, kai jūsų išdėstyme yra EditText ir Button ir norite, kad klaviatūra išnyktų spustelėjus mygtuką.
Šiame vadove išnagrinėsime paprastus ir veiksmingus būdus, kaip pasiekti šią funkciją. Atlikdami nurodytus veiksmus, galėsite pagerinti programos naudotojo patirtį efektyviai tvarkydami klaviatūros matomumą.
komandą | apibūdinimas |
---|---|
getSystemService | Nuskaito sistemos lygio paslaugą pagal pavadinimą; čia jis naudojamas norint gauti „InputMethodManager“, skirtą klaviatūrai valdyti. |
hideSoftInputFromWindow | Slepia minkštąją klaviatūrą nuo lango, kaip parametrus paimdamas prieigos raktą ir vėliavėles. |
getCurrentFocus | Grąžina dabartinį sufokusuotą veiklos rodinį, naudojamą nustatant, kur klaviatūra turėtų pasislėpti. |
onClickListener | Nustatomas atgalinis skambutis, kuris suaktyvinamas spustelėjus rodinį (pvz., mygtuką). |
dispatchTouchEvent | Sulaiko jutiklinio ekrano judesio įvykius prieš išsiunčiant juos į langą, naudinga tvarkant tinkintą jutiklinį ekraną. |
windowToken | Grąžina prieigos raktą, kuris vienareikšmiškai identifikuoja su vaizdu susietą langą, reikalingą klaviatūrai paslėpti. |
Supratimas, kaip paslėpti „Android“ klaviatūrą
Java pavyzdyje scenarijus pirmiausia importuoja būtinas klases, pvz., InputMethodManager, View, ir EditText. The onCreate metodas nustato išdėstymą ir inicijuoja EditText ir Button. Spustelėjus mygtuką, hideKeyboard metodas vadinamas. Šis metodas nuskaito dabartinį sufokusuotą vaizdą naudojant getCurrentFocus, o jei vaizdas sufokusuotas, jis naudoja InputMethodManager norėdami paslėpti minkštąją klaviatūrą skambindami hideSoftInputFromWindow. Tai veiksmingai uždaro klaviatūrą paspaudus mygtuką.
Kotlin pavyzdyje pasiekiamas panašus funkcionalumas. Scenarijus nepaiso onCreate būdas nustatyti turinio rodinį ir inicijuoti EditText ir Button. Mygtuko paspaudimo klausytojas skambina hideKeyboard metodas. Be to, dispatchTouchEvent Metodas yra nepaisomas, kad paslėptumėte klaviatūrą, kai liečiate lauką. Šis metodas patikrina, ar vaizdas sufokusuotas, ir paslepia naudojamą klaviatūrą InputMethodManager. Šie scenarijai pagerina vartotojo patirtį efektyviai valdydami minkštosios klaviatūros matomumą.
„Android“ minkštosios klaviatūros uždarymas programiškai
„Java“, skirta „Android“ kūrimui
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);
}
}
}
Paslėpkite klaviatūrą palietus išorę
Kotlin, skirtas „Android“ kūrimui
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)
}
}
Pažangūs „Android“ klaviatūros valdymo būdai
Kitas svarbus „Android“ minkštosios klaviatūros valdymo aspektas yra jos matomumo tvarkymas reaguojant į įvairias vartotojo sąveikas ir konfigūracijas. Pavyzdžiui, galbūt norėsite, kad klaviatūra būtų rodoma automatiškai, kai EditText sufokusuoja arba užtikrina, kad jis pasislėptų naršant tarp skirtingų vartotojo sąsajos komponentų. Tai galima pasiekti naudojant InputMethodManager kartu su gyvavimo ciklo atgaliniais skambučiais, pvz onResume ir onPause.
Be to, galite valdyti klaviatūros veikimą reguliuodami android:windowSoftInputMode atributą veiklos aprašo faile. Šis atributas leidžia nurodyti, ar klaviatūra turi koreguoti veiklos išdėstymą, ar likti paslėpta, kol nebus aiškiai nurodyta. Šių konfigūracijų naudojimas gali žymiai pagerinti vartotojo patirtį, nes suteikia intuityvesnę ir jautresnę sąsają.
Dažni klausimai apie „Android“ klaviatūros slėpimą
- Kaip paslėpti klaviatūrą, kai EditText netenka dėmesio?
- Galite nepaisyti onFocusChange klausytojas EditText ir paskambink InputMethodManager.hideSoftInputFromWindow.
- Ar galiu automatiškai parodyti klaviatūrą, kai EditText įgauna dėmesį?
- Taip, naudoti InputMethodManager.showSoftInput viduje onFocusChange klausytojas.
- Kaip galiu paslėpti klaviatūrą fragmente?
- Skambinti InputMethodManager.hideSoftInputFromWindow fragmento požiūrio kontekste.
- Kas yra android:windowSoftInputMode naudojama?
- Nurodoma, kaip klaviatūra sąveikauja su veiklos išdėstymu, pvz., keičia dydį arba lieka paslėpti.
- Kaip paslėpti klaviatūrą palietus lauką EditText?
- Nepaisyti dispatchTouchEvent savo veikloje, kad patikrintumėte, ar nėra liečiamų įvykių už EditText.
- Ar galiu priversti klaviatūrą likti paslėpta?
- Taip, nustatant android:windowSoftInputMode į stateHidden manifeste.
- Kaip nustatyti, ar klaviatūra šiuo metu matoma?
- Naudokite getWindowVisibleDisplayFrame kad palygintumėte matomą ekrano sritį su šakninio rodinio aukščiu.
- Ar galima programiškai paslėpti klaviatūrą spustelėjus mygtuką?
- Taip, paskambink InputMethodManager.hideSoftInputFromWindow mygtuke onClickListener.
Pagrindiniai „Android“ klaviatūros paslėpimo pasiūlymai
Apibendrinant galima pasakyti, kad „Android“ programinės įrangos klaviatūros valdymas yra labai svarbus norint pagerinti naudotojo patirtį jūsų programoje. Naudojant InputMethodManager, galite programiškai paslėpti arba rodyti klaviatūrą, atsižvelgdami į vartotojo sąveiką, pvz., mygtukų paspaudimus ar palietimo įvykius. Be to, konfigūruojant android:windowSoftInputMode atributas aprašo faile leidžia tiksliau valdyti klaviatūros elgseną. Taikant šiuos metodus užtikrinama, kad klaviatūros buvimas netrukdys naudotis programėle, todėl naudotojams suteikiama sklandi ir intuityvi sąsaja.