Pengenalan kepada Menyembunyikan Papan Kekunci Android
Apabila membangunkan aplikasi Android, ada kalanya anda perlu menyembunyikan papan kekunci lembut secara pemrograman. Ini amat berguna apabila anda mempunyai EditTeks dan Butang dalam reka letak anda dan mahu papan kekunci hilang selepas mengklik butang.
Dalam panduan ini, kami akan meneroka cara yang mudah dan berkesan untuk mencapai fungsi ini. Dengan mengikut langkah yang disediakan, anda akan dapat meningkatkan pengalaman pengguna apl anda dengan mengurus keterlihatan papan kekunci dengan cekap.
Perintah | Penerangan |
---|---|
getSystemService | Mendapatkan semula perkhidmatan peringkat sistem mengikut nama; di sini, ia digunakan untuk mendapatkan InputMethodManager untuk menguruskan papan kekunci. |
hideSoftInputFromWindow | Menyembunyikan papan kekunci lembut dari tetingkap, mengambil token dan bendera sebagai parameter. |
getCurrentFocus | Mengembalikan paparan fokus semasa dalam aktiviti, digunakan untuk menentukan tempat papan kekunci harus bersembunyi. |
onClickListener | Sediakan panggilan balik yang dicetuskan apabila paparan (cth., Butang) diklik. |
dispatchTouchEvent | Memintas peristiwa gerakan skrin sentuh sebelum ia dihantar ke tingkap, berguna untuk pengendalian sentuhan tersuai. |
windowToken | Mengembalikan token yang mengenal pasti secara unik tetingkap yang dikaitkan dengan paparan, yang diperlukan untuk menyembunyikan papan kekunci. |
Memahami Cara Menyembunyikan Papan Kekunci Android
Dalam contoh Java, skrip terlebih dahulu mengimport kelas yang diperlukan seperti InputMethodManager, View, dan EditText. The onCreate kaedah menyediakan susun atur dan memulakan EditText dan Button. Apabila butang diklik, hideKeyboard kaedah dipanggil. Kaedah ini mendapatkan semula paparan fokus semasa menggunakan getCurrentFocus, dan jika pandangan difokuskan, ia menggunakan InputMethodManager untuk menyembunyikan papan kekunci lembut dengan memanggil hideSoftInputFromWindow. Ini dengan berkesan menutup papan kekunci apabila butang diklik.
Dalam contoh Kotlin, kefungsian serupa dicapai. Skrip mengatasi onCreate kaedah untuk menetapkan paparan kandungan dan memulakan EditText dan Button. Pendengar klik butang memanggil hideKeyboard kaedah. Selain itu, dispatchTouchEvent kaedah ditindih untuk menyembunyikan papan kekunci apabila menyentuh bahagian luar. Kaedah ini menyemak sama ada paparan difokuskan dan menyembunyikan penggunaan papan kekunci InputMethodManager. Skrip ini meningkatkan pengalaman pengguna dengan menguruskan keterlihatan papan kekunci lembut dengan cekap.
Menutup Papan Kekunci Android Soft Secara Pengaturcaraan
Java untuk Pembangunan Android
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);
}
}
}
Sembunyikan Papan Kekunci Apabila Menyentuh Bahagian Luar
Kotlin untuk Pembangunan Android
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)
}
}
Teknik Lanjutan untuk Mengurus Papan Kekunci Android
Satu lagi aspek penting dalam mengurus papan kekunci lembut Android ialah mengendalikan keterlihatannya sebagai tindak balas kepada pelbagai interaksi dan konfigurasi pengguna. Sebagai contoh, anda mungkin mahu papan kekunci muncul secara automatik apabila a EditText memperoleh fokus atau untuk memastikan ia bersembunyi apabila menavigasi antara komponen UI yang berbeza. Ini boleh dicapai dengan menggunakan InputMethodManager bersama-sama dengan panggilan balik kitaran hayat seperti onResume dan onPause.
Tambahan pula, anda boleh mengawal kelakuan papan kekunci dengan melaraskan android:windowSoftInputMode atribut dalam fail manifes aktiviti anda. Atribut ini membolehkan anda menentukan sama ada papan kekunci harus melaraskan reka letak aktiviti atau kekal tersembunyi sehingga diminta secara eksplisit. Menggunakan konfigurasi ini boleh meningkatkan pengalaman pengguna dengan ketara dengan menyediakan antara muka yang lebih intuitif dan responsif.
Soalan Lazim Mengenai Menyembunyikan Papan Kekunci Android
- Bagaimanakah cara saya menyembunyikan papan kekunci apabila an EditText hilang fokus?
- Anda boleh mengatasi onFocusChange pendengar EditText dan panggil InputMethodManager.hideSoftInputFromWindow.
- Bolehkah saya menunjukkan papan kekunci secara automatik apabila an EditText mendapat tumpuan?
- Ya, gunakan InputMethodManager.showSoftInput di dalam onFocusChange pendengar.
- Bagaimanakah saya boleh menyembunyikan papan kekunci dalam serpihan?
- Panggil InputMethodManager.hideSoftInputFromWindow dalam konteks pandangan serpihan.
- Apa itu android:windowSoftInputMode digunakan untuk?
- Ia menentukan cara papan kekunci berinteraksi dengan reka letak aktiviti, seperti mengubah saiz atau kekal tersembunyi.
- Bagaimanakah cara saya menyembunyikan papan kekunci apabila menyentuh bahagian luar an EditText?
- mengatasi dispatchTouchEvent dalam aktiviti anda untuk menyemak acara sentuhan di luar EditText.
- Bolehkah saya memaksa papan kekunci untuk kekal tersembunyi?
- Ya, dengan menetapkan android:windowSoftInputMode kepada stateHidden dalam manifes.
- Bagaimanakah saya dapat mengesan jika papan kekunci kelihatan pada masa ini?
- guna getWindowVisibleDisplayFrame untuk membandingkan kawasan skrin yang boleh dilihat dengan ketinggian paparan akar.
- Adakah mungkin untuk menyembunyikan papan kekunci secara pemrograman pada satu klik butang?
- Ya, hubungi InputMethodManager.hideSoftInputFromWindow dalam butang onClickListener.
Ambilan Utama untuk Menyembunyikan Papan Kekunci Android
Kesimpulannya, mengurus papan kekunci lembut Android adalah penting untuk meningkatkan pengalaman pengguna dalam aplikasi anda. Dengan menggunakan InputMethodManager, anda boleh menyembunyikan atau menunjukkan papan kekunci secara pengaturcaraan berdasarkan interaksi pengguna seperti klik butang atau peristiwa sentuh. Selain itu, mengkonfigurasi android:windowSoftInputMode atribut dalam fail manifes anda membolehkan anda mengawal tingkah laku papan kekunci dengan lebih tepat. Melaksanakan kaedah ini memastikan bahawa kehadiran papan kekunci tidak mengganggu kebolehgunaan apl, menyediakan antara muka yang lancar dan intuitif untuk pengguna.