Bagaimana cara menghapus fokus otomatis / sembulan keyboard dari suatu bidang saat layar muncul?

105

Saya memiliki layar di mana bidang pertama adalah EditText, dan mendapatkan fokus saat startup, juga memunculkan jenis input numerik, yang sangat mengganggu

Bagaimana saya bisa memastikan bahwa ketika aktivitas dimulai, fokus tidak diperoleh, dan / atau panel input tidak dimunculkan?

Pentium10
sumber

Jawaban:

157
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

atau

setel properti aktivitas dalam file manifes seperti di bawah ini di tag aplikasi

android:windowSoftInputMode="stateHidden"
Mitul Nakum
sumber
Menyetel android: windowSoftInputMode di file AndroidManifest.xml bisa di-OR dengan nilai lain. Mode biasanya menyiratkan nilai tunggal tetapi dalam kasus ini, nilainya adalah kumpulan tanda. Deskripsi nilai:Formats: flag Values: adjustNothing, adjustPan, adjustResize, adjustUnspecified, stateAlwaysHidden, stateAlwaysVisible, stateHidden, stateUnchanged, stateUnspecified, stateVisible Specify the default soft-input mode for the main window of this activity. A value besides "unspecified" here overrides any value in the theme.
Jeff Muir
145

buka file manifes aplikasi Anda, dan tulis baris ini untuk aktivitas yang ingin Anda nonaktifkan pop-up keyboard otomatisnya.

android:windowSoftInputMode="stateHidden"
sm.euro
sumber
Tidak berhasil untuk saya. Saya menaruhnya di activity_main.xml. Ini bekerja dengan sempurna ketika saya memasukkannya ke onCreate (). getWindow (). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
glez
20

Agar secara terprogram tidak ada keyboard yang ditampilkan, tetapi widget default masih menerima panggilan fokus:

getWindow().setSoftInputMode(WindowManager.
                             LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

di onResume()

danmux
sumber
11
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

panggil metode di atas di dalam onCreate () . Ini mencegah softKeyboard untuk ditampilkan kecuali pengguna memilih EditText bytapping or clicking.

atau cukup tambahkan android:windowSoftInputMode="stateHidden"tag Aktivitas diManifest.xml

Xar-e-ahmer Khan
sumber
10

Ini biasanya berantakan. Hal pertama yang saya coba adalah mencoba mencuri fokus dengan view lain lewat. Anda juga harus memiliki focusable dan focusableInTouchMode.

<TextView
  ...
  android:focusable="true"
  android:focusableInTouchMode="true">

    <requestFocus/>
</TextView>
urSus
sumber
Ini bekerja. Saya merasa ini adalah pendekatan yang lebih bersih tetapi juga tergantung bagaimana kondisi Anda. Saya menerima yang ini.
JaydeepW
5

Miliki pandangan lain untuk mengambil fokus. Secara default, Tampilan pertama yang dapat difokuskan akan mendapatkan fokus saat tata letak diluaskan. Anda dapat meminta fokus pada View yang berbeda melalui XML:

<TextView
    android:layout_width="wrap_parent"
    android:layout_height="wrap_content"
    android:text="Some other view">

    <requestFocus />
</TextView>

Ini berfungsi untuk semua View.

Jika Anda ingin melakukannya secara terprogram, Anda dapat menggunakan view.requestFocus().

Jason Robinson
sumber
0
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
paul Liang
sumber
3
Selamat datang di StackOverflow! Ini tidak seperti forum lain, jika Anda ingin mengubah jawaban Anda, klik saja edittautannya dan lakukan perubahan. Dan coba format kode Anda dengan memilih kode Anda dan menggunakan tombol Contoh Kode {}atau menekan Ctrl+K.
Peter Lang
0

Menambahkan android:windowSoftInputMode="stateHidden"ke Aktivitas Anda dalam manifes hanya menyembunyikan keyboard saat Anda meluncurkan aktivitas, atau seperti yang dikatakan Google

Saat pengguna dengan tegas menavigasi ke depan ke aktivitas, bukan kembali ke aktivitas itu karena keluar dari aktivitas lain

Untuk menyembunyikan keyboard juga saat pengguna menekan tombol kembali dan kembali ke aktivitas Anda dari beberapa aktivitas lain, gunakan android:windowSoftInputMode="stateAlwaysHidden"

Devansh Maurya
sumber
-1

belum mencoba ini atau saya berada di dekat komputer pemrograman saya, tetapi saya curiga mengirim fokus secara terprogram ke tampilan orang tua atau sesuatu yang bersifat semacam itu dapat melakukan trik - itu lebih mungkin solusi daripada solusi, tetapi sekali lagi tidak dapat mengujinya saja Sebuah pemikiran

Ben
sumber
1
Saya sudah mencobanya tetapi tidak berhasil. Saya memanggil .requestFocus();sebuah tombol, dan masih popup keyboard.
Pentium10
pendapat dapat ditambahkan sebagai komentar
Alberto M