Saya memiliki aktivitas dengan Edit Text
input. Saat aktivitas diinisialisasi, keyboard Android ditampilkan. Bagaimana keyboard tetap tersembunyi sampai pengguna memfokuskan input?
android:windowSoftInputMode="adjustPan"
?
Saya memiliki aktivitas dengan Edit Text
input. 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:windowSoftInputMode
nilai seperti adjustResize
atau 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 :)
true
berfungsi, sesuai jawaban Jack T. Apakah ada perubahan perilaku di versi terbaru?
false
harus 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" ...>