Edit Text
Girdi ile bir faaliyetim var . Etkinlik başlatıldığında Android klavye gösterilir. Kullanıcı girişi odaklayana kadar klavye nasıl gizli kalabilir?
android:windowSoftInputMode="adjustPan"
?
Edit Text
Girdi ile bir faaliyetim var . Etkinlik başlatıldığında Android klavye gösterilir. Kullanıcı girişi odaklayana kadar klavye nasıl gizli kalabilir?
android:windowSoftInputMode="adjustPan"
?
Yanıtlar:
Bence aşağıdakiler işe yarayabilir
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Daha önce bu tür şeyler için kullandım.
EditText
? :) Bu, aşağıdakileri içeren etkinlik başladığında klavyeyi gizlemek içindirEditText
Bunu da deneyin -
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Aksi takdirde, bildirim dosyanızın etkinliğinde beyan edin -
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
>
Zaten veya android:windowSoftInputMode
gibi bir değer için kullandıysanız , aşağıdaki gibi iki değeri birleştirebilirsiniz:adjustResize
adjustPan
<activity
...
android:windowSoftInputMode="stateHidden|adjustPan"
...
>
Bu, uygun olduğunda klavyeyi gizler, ancak klavyenin gösterilmesi gerektiğinde etkinlik görünümünü kaydırır.
Temayı kullanarak tüm etkinlikler için gizle
<style name="MyTheme" parent="Theme">
<item name="android:windowSoftInputMode">stateHidden</item>
</style>
temayı ayarla
<application android:theme="@style/MyTheme">
Bu iki özelliği üst mizanpajınıza ekleyin (ör. Doğrusal Düzen, Göreli Düzen)
android:focusable="false"
android:focusableInTouchMode="false"
Hile yapacak :)
true
Jack T'nin cevabına göre onları işe koyuyor. Son sürümlerde davranış değişikliği oldu mu?
false
Fikir EditText kutularından uzak tutmak için neden olsa bu ayar çalışması gerekir, anlamıyorum.
Menifest dosyasında bildirmeye çalışın
<activity android:name=".HomeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden"
>
Android'de ekleManifest.xml
<activity android:name=".HomeActivity" android:windowSoftInputMode="stateHidden">
</activity>
Bu kod satırlarını, içinde "sorun" bulunan .xml mizanpaj dosyasının doğrudan üst mizanpajına da yazabilirsiniz :
android:focusable="true"
android:focusableInTouchMode="true"
Örneğin:
<?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>
DÜZENLE :
EditText başka bir mizanpajda bulunuyorsa örnek:
<?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>
Anahtar EditText doğrudan odaklanabilir olmadığından emin olmaktır.
Hoşçakal! ;-)
Benim için en iyi çözüm, sınıfını yapıştır
@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();
}
Klavyeyi gizleme işlevi.
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);
}
}
AndroidManifext.xml dosyasında klavyeyi gizle.
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateHidden">
@Lucas'ın kabul ettiği cevabı genişletmek için:
Bunu erken yaşam döngüsü olaylarından birinde yaptığınız aktiviteden çağırın:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
override fun onResume() {
super.onResume()
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
Her bir öğe için bu küme benzersiz özelliğini deneyebilirsiniz
TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);
Öğe odaktayken klavye gösterilmeyecek
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
bunu Faaliyetinize ekleyin:
@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" ...>