Sissejuhatus Androidi klaviatuuri peitmisse
Androidi rakenduste arendamisel on aegu, kus peate pehme klaviatuuri programmiliselt peitma. See on eriti kasulik, kui teie paigutuses on Redigeeri tekst ja nupp ja soovite, et klaviatuur pärast nupu klõpsamist kaoks.
Selles juhendis uurime lihtsaid ja tõhusaid viise selle funktsiooni saavutamiseks. Esitatud samme järgides saate parandada oma rakenduse kasutuskogemust, hallates tõhusalt klaviatuuri nähtavust.
Käsk | Kirjeldus |
---|---|
getSystemService | Otsib süsteemitaseme teenuse nime järgi; siin kasutatakse seda klaviatuuri haldamiseks mõeldud InputMethodManageri hankimiseks. |
hideSoftInputFromWindow | Peidab pehme klaviatuuri akna eest, võttes parameetritena märgi ja lipud. |
getCurrentFocus | Tagastab tegevuses praeguse fokuseeritud vaate, mida kasutatakse klaviatuuri peitmise koha määramiseks. |
onClickListener | Seadistab tagasihelistamise, mis käivitub vaatel (nt nupul) klõpsamisel. |
dispatchTouchEvent | Peatab puuteekraani liikumise sündmused enne nende aknale saatmist, mis on kasulik kohandatud puutekäsitluse jaoks. |
windowToken | Tagastab klaviatuuri peitmiseks vajaliku märgi, mis identifitseerib üheselt vaatega seotud akna. |
Androidi klaviatuuri peitmise mõistmine
Java näites impordib skript kõigepealt vajalikud klassid, näiteks InputMethodManager, Viewja EditText. The onCreate meetod seadistab paigutuse ja lähtestab EditText ja Button. Nupule klõpsamisel kuvatakse hideKeyboard meetodit nimetatakse. See meetod hangib praeguse fokuseeritud vaate kasutades getCurrentFocus, ja kui vaade on teravustatud, kasutab see InputMethodManager pehme klaviatuuri peitmiseks helistades hideSoftInputFromWindow. See sulgeb tõhusalt klaviatuuri, kui nuppu klõpsate.
Kotlini näites saavutatakse sarnane funktsionaalsus. Skript alistab onCreate meetod sisuvaate määramiseks ja lähtestamiseks EditText ja Button. Nupuklõpsu kuulaja helistab hideKeyboard meetod. Lisaks on dispatchTouchEvent meetod on tühistatud, et peita klaviatuur väljast puudutamisel. See meetod kontrollib, kas vaade on teravustatud, ja peidab kasutatava klaviatuuri InputMethodManager. Need skriptid parandavad kasutajakogemust, haldades tõhusalt pehme klaviatuuri nähtavust.
Androidi pehme klaviatuuri programmiline sulgemine
Java Androidi arendamiseks
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);
}
}
}
Väljas puudutamisel peitke klaviatuur
Kotlin Androidi arendamiseks
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)
}
}
Täiustatud tehnikad Androidi klaviatuuri haldamiseks
Androidi pehme klaviatuuri haldamise teine oluline aspekt on selle nähtavuse käsitlemine vastusena erinevatele kasutaja interaktsioonidele ja konfiguratsioonidele. Näiteks võite soovida, et klaviatuur ilmuks automaatselt, kui EditText fookuse või varjamise tagamiseks erinevate kasutajaliidese komponentide vahel navigeerimisel. Seda on võimalik saavutada kasutades InputMethodManager koos elutsükli tagasihelistamisega nagu onResume ja onPause.
Lisaks saate reguleerida klaviatuuri käitumist android:windowSoftInputMode atribuut teie tegevuse manifesti failis. See atribuut võimaldab teil määrata, kas klaviatuur peaks kohandama tegevuse paigutust või jääma peidetuks, kuni seda selgesõnaliselt nõutakse. Nende konfiguratsioonide kasutamine võib kasutajakogemust märkimisväärselt parandada, pakkudes intuitiivsemat ja tundlikumat liidest.
Levinud küsimused Androidi klaviatuuri peitmise kohta
- Kuidas peita klaviatuur, kui an EditText kaotab fookuse?
- Saate tühistada onFocusChange kuulaja EditText ja helistada InputMethodManager.hideSoftInputFromWindow.
- Kas ma saan klaviatuuri automaatselt kuvada, kui EditText kogub tähelepanu?
- Jah, kasuta InputMethodManager.showSoftInput aastal onFocusChange kuulaja.
- Kuidas ma saan klaviatuuri fragmenti peita?
- Helistama InputMethodManager.hideSoftInputFromWindow fragmendi vaate kontekstis.
- Mis on android:windowSoftInputMode kasutatud?
- See määrab, kuidas klaviatuur toimib tegevuse paigutusega (nt suuruse muutmine või peidetuks jäämine).
- Kuidas peita klaviatuuri, kui seda puudutada väljaspool EditText?
- Alistada dispatchTouchEvent oma tegevuses, et kontrollida puutesündmusi väljaspool EditText.
- Kas ma saan sundida klaviatuuri varjatuks jääma?
- Jah, seadistusega android:windowSoftInputMode juurde stateHidden manifestis.
- Kuidas teha kindlaks, kas klaviatuur on hetkel nähtav?
- Kasuta getWindowVisibleDisplayFrame et võrrelda ekraani nähtavat ala juurvaate kõrgusega.
- Kas nupuvajutusega on võimalik klaviatuuri programmiliselt peita?
- Jah, helista InputMethodManager.hideSoftInputFromWindow nuppude sees onClickListener.
Võtmed Androidi klaviatuuri peitmisel
Kokkuvõtteks võib öelda, et Androidi pehme klaviatuuri haldamine on teie rakenduse kasutajakogemuse parandamiseks ülioluline. Kasutades InputMethodManager, saate klaviatuuri programmiliselt peita või kuvada kasutaja interaktsioonide (nt nupuklõpsude või puutesündmuste) põhjal. Lisaks konfigureerides android:windowSoftInputMode manifesti faili atribuut võimaldab teil klaviatuuri käitumist täpsemalt juhtida. Nende meetodite rakendamine tagab, et klaviatuuri olemasolu ei sega rakenduse kasutatavust, pakkudes kasutajatele sujuvat ja intuitiivset liidest.