Mam układ, który zawiera takie widoki:
<LinearLayout>
<TextView...>
<TextView...>
<ImageView ...>
<EditText...>
<Button...>
</linearLayout>
Jak mogę ustawić ostrość (wyświetlić klawiaturę) na moim EditText
programowo?
Próbowałem tego i działa tylko wtedy, gdy uruchamiam Activity
normalnie, ale kiedy uruchamiam go w TabHost
, to nie działa.
txtSearch.setFocusableInTouchMode(true);
txtSearch.setFocusable(true);
txtSearch.requestFocus();
android
focus
android-edittext
Houcine
źródło
źródło
Odpowiedzi:
Spróbuj tego:
http://developer.android.com/reference/android/view/View.html#requestFocus ()
źródło
posługiwać się:
źródło
View
podklasy)imm.showSoftInput()
nie działa.To zadziałało dla mnie, dzięki ungalcrys
Pokaż klawiaturę:
Ukryj klawiaturę:
źródło
showSoftInput
w ogóle mi nie działał.Pomyślałem, że muszę ustawić tryb wprowadzania:
android:windowSoftInputMode="stateVisible"
(tutaj w komponencie Aktywność w manifeście)Mam nadzieję, że to pomoże!
źródło
źródło
tb.post({ showKeyboard(tb) })
). Zauważ, że potrzebujemy widoku EditText (tb
), a nie widoku fragmentu.Oto, w jaki sposób można wykonać rozszerzenie Kotlin do wyświetlania i ukrywania miękkiej klawiatury:
Następnie możesz po prostu to zrobić:
źródło
Polecam korzystanie z LifecycleObserver, który jest częścią obsługi Lifecycle with Lifecycle-Aware Components systemu Android Jetpack .
Chcę otworzyć i zamknąć klawiaturę, gdy pojawi się fragment / działanie. Po pierwsze, zdefiniuj dwie funkcje rozszerzenia dla EditText. Możesz umieścić je w dowolnym miejscu w swoim projekcie:
Następnie zdefiniuj LifecycleObserver, który otwiera i zamyka klawiaturę, gdy działanie / fragment osiągnie
onResume()
lubonPause
:Następnie dodaj następujący wiersz do dowolnego fragmentu / działania, możesz ponownie użyć LifecycleObserver w dowolnym momencie. Np. Dla fragmentu:
źródło
Oto klasa KeyboardHelper do ukrywania i pokazywania klawiatury
}
źródło
Pierwszy sposób :
Drugi sposób :
W Manifeście:
W kodzie:
źródło
Próbowałem wiele sposobów i to nie działa, nie jestem pewien, ponieważ używam wspólnego przejścia z fragmentu do działania zawierającego tekst edycji.
Przy okazji mój tekst edycyjny jest również zawinięty w LinearLayout.
Dodałem niewielkie opóźnienie, aby poprosić o fokus i poniższy kod działał dla mnie: (Kotlin)
showKeyboard ()
źródło
źródło
Nie mogłem zmusić żadnej z tych odpowiedzi do samodzielnego działania. Rozwiązaniem było dla mnie połączenie:
Nie jestem pewien, dlaczego było to dla mnie wymagane - według dokumentów wydaje się, że każda metoda powinna działać sama.
źródło