Saya memiliki aktivitas dengan Edit Textinput. Saat aktivitas diinisialisasi, keyboard Android ditampilkan. Bagaimana keyboard tetap tersembunyi sampai pengguna memfokuskan input?
android:windowSoftInputMode="adjustPan"?
Saya memiliki aktivitas dengan Edit Textinput. Saat aktivitas diinisialisasi, keyboard Android ditampilkan. Bagaimana keyboard tetap tersembunyi sampai pengguna memfokuskan input?
android:windowSoftInputMode="adjustPan"?
Jawaban:
Saya pikir yang berikut ini mungkin berhasil
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Saya sudah menggunakannya untuk hal semacam ini sebelumnya.
EditText? :) Ini untuk menyembunyikan keyboard saat aktivitas dimulai yang berisiEditText
Coba ini juga -
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Jika tidak, nyatakan dalam aktivitas file manifes Anda -
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
>
Jika Anda telah menggunakan android:windowSoftInputModenilai seperti adjustResizeatau adjustPan, Anda dapat menggabungkan dua nilai seperti:
<activity
...
android:windowSoftInputMode="stateHidden|adjustPan"
...
>
Ini akan menyembunyikan keyboard bila perlu, tetapi geser tampilan aktivitas jika keyboard harus ditampilkan.
Sembunyikan untuk semua aktivitas menggunakan tema
<style name="MyTheme" parent="Theme">
<item name="android:windowSoftInputMode">stateHidden</item>
</style>
atur temanya
<application android:theme="@style/MyTheme">
Tambahkan dua properti ini ke tata letak induk Anda (mis: Tata Letak Linear, Tata Letak Relatif)
android:focusable="false"
android:focusableInTouchMode="false"
Ini akan melakukan triknya :)
trueberfungsi, sesuai jawaban Jack T. Apakah ada perubahan perilaku di versi terbaru?
falseharus bekerja, karena idenya adalah untuk mendapatkan fokus dari kotak EditText.
Cobalah untuk mendeklarasikannya dalam file menifest
<activity android:name=".HomeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden"
>
Tambahkan saja di AndroidManifest.xml
<activity android:name=".HomeActivity" android:windowSoftInputMode="stateHidden">
</activity>
Anda juga dapat menulis baris kode ini di tata letak induk langsung dari file tata letak .xml di mana Anda memiliki "masalah":
android:focusable="true"
android:focusableInTouchMode="true"
Sebagai contoh:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
...
android:focusable="true"
android:focusableInTouchMode="true" >
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
EDIT:
Contoh jika EditText terkandung dalam tata letak lain:
<?xml version="1.0" encoding="utf-8"?>
<ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
... > <!--not here-->
... <!--other elements-->
<LinearLayout
android:id="@+id/theDirectParent"
...
android:focusable="true"
android:focusableInTouchMode="true" > <!--here-->
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
</ConstraintLayout>
Kuncinya adalah memastikan bahwa EditText tidak dapat langsung fokus.
Sampai jumpa! ;-)
Solusi terbaik untuk saya, tempel kelas Anda
@Override
public void onResume() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onResume();
}
@Override
public void onStart() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onStart();
}
Berfungsi untuk menyembunyikan keyboard.
public static void hideKeyboard(Activity activity) {
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
Sembunyikan keyboard di file AndroidManifext.xml.
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateHidden">
Untuk memperluas jawaban yang diterima oleh @Lucas:
Sebut ini dari aktivitas Anda di salah satu acara siklus kehidupan awal:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
override fun onResume() {
super.onResume()
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
Anda dapat mencoba set atribut unik ini untuk setiap elemen
TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);
Keyboard tidak akan ditampilkan saat elemen fokus
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
cukup tambahkan ini di Aktivitas Anda:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (getCurrentFocus() != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
return super.dispatchTouchEvent(ev);
}
<activity android:windowSoftInputMode="stateHidden" ...>