Edit TextGirdi 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 TextGirdi 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:windowSoftInputModegibi bir değer için kullandıysanız , aşağıdaki gibi iki değeri birleştirebilirsiniz:adjustResizeadjustPan
<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 :)
trueJack T'nin cevabına göre onları işe koyuyor. Son sürümlerde davranış değişikliği oldu mu?
falseFikir 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" ...>