Android 14 (poziom interfejsu API 34) i nowsze umożliwiają użytkownikom pisanie w dowolnym polu tekstowym w dowolnej aplikacji za pomocą rysika. Pola do wpisywania tekstu na Androidzie, w tym komponenty EditText
i widżety tekstowe WebView
, domyślnie obsługują wprowadzanie za pomocą rysika.
Jeśli jednak Twoja aplikacja wymaga niestandardowych pól tekstowych (patrz Niestandardowe edytory tekstu) lub ma złożony układ z polami tekstowymi nakładających się na powierzchnię do rysowania, musisz ją dostosować.
EditText
Pismo odręczne rysikiem jest domyślnie włączone we wszystkich polach EditText
w Androidzie 14 i nowszych. Tryb pisma odręcznego jest uruchamiany w przypadku EditText
, gdy wykryto zdarzenie związane z ruchu rysika w zakresie widoku pisma odręcznego.
Granice pisma odręcznego obejmują 40 dp marginesu pionowego i 10 dp marginesu poziomego wokół widoku. Dostosuj granice pisma ręcznego za pomocą setHandwritingBoundsOffsets()
.
Wyłącz pismo odręczne za pomocą setAutoHandwritingEnabled(false)
.

EditText
w przypadku pisma odręcznego.
Przekazywanie dostępu
Aplikacje mogą wyświetlać obiekty zastępcze interfejsu, które wyglądają jak pola do wprowadzania tekstu, ale tak naprawdę są tylko statycznymi elementami interfejsu bez możliwości wprowadzania tekstu. Przykładem są pola wyszukiwania. Kliknięcie statycznego elementu interfejsu powoduje przejście do nowego interfejsu, który zawiera pole tekstowe umożliwiające wprowadzanie danych.
Delegowanie danych wejściowych rysika
Aby obsługiwać wprowadzanie tekstu odręcznego za pomocą rysika w półprzezroczystych polach tekstowych, użyj interfejsów API do delegowania funkcji pisania odręcznego (patrz setHandwritingDelegatorCallback()
i setIsHandwritingDelegate()
). Element interfejsu użytkownika w postaci pola tekstowego jest skonfigurowany tak, aby delegować funkcję pisania odręcznego do pola tekstowego, na przykład:
Kotlin
if (Build.VERSION.SDK_INT >= 34) { placeholderInputField.setHandwritingDelegatorCallback { showAndFocusDelegateInputField() } delegateInputField.setIsHandwritingDelegate(true) }
Java
if (Build.VERSION.SDK_INT >= 34) { placeholderInputField.setHandwritingDelegatorCallback(this::showAndFocusInputFieldDelegate); delegateInputField.setIsHandwritingDelegate(true); }
Ruch rysika nad polem do wprowadzania tekstu w widoku symbolu zastępczego uruchamia funkcję wywołania zwrotnego.
Wywołanie zwrotne powoduje przejście w interfejsie, aby wyświetlić i wyśrodkować funkcjonalne pole wejściowe. Implementacja wywołania zwrotnego jest zwykle taka sama jak implementacja detektora kliknięć w elemencie zastępczym. Gdy pole tekstowe funkcji tworzy InputConnection
, uruchamia się tryb pisania odręcznego za pomocą rysika.
Material Design
Biblioteka com.google.android.material.search
udostępnia klasy SearchBar
i SearchView
, aby ułatwić implementację wzorca interfejsu zastępczego.
Widoki zastępcze i funkcjonalne wyszukiwania są powiązane z setUpWithSearchBar()
.
Delegowanie funkcji obsługi pisma odręcznego jest konfigurowane w bibliotece Material bez konieczności wprowadzania dodatkowych zmian w aplikacji.
nakładać się na powierzchnie do rysowania,
Jeśli Twoja aplikacja ma powierzchnię do rysowania z polem tekstowym nałożonym na nią, konieczne może być wyłączenie funkcji pisania piórem, aby umożliwić użytkownikowi rysowanie. Zobacz setAutoHandwritingEnabled()
.
Testowanie
Pisanie piórem jest obsługiwane na urządzeniach z Androidem 14 lub nowszym, które mają kompatybilne urządzenie do wprowadzania danych za pomocą pióra i edytor metody wprowadzania (IME) obsługujący interfejsy API do pisania piórem w Androidzie 14.
Jeśli nie masz urządzenia ze sterowaniem za pomocą rysika, symuluj sterowanie za pomocą rysika na dowolnym urządzeniu z dostępem do uprawnień roota (w tym na emulatorach) za pomocą tych poleceń Android Debug Bridge (adb):
// Android 14
adb shell setprop persist.debug.input.simulate_stylus_with_touch true && adb shell stop && adb shell start
// Android 15 and higher
// Property takes effect after screen reconfiguration such as orientation change.
adb shell setprop debug.input.simulate_stylus_with_touch true
Jeśli używasz urządzenia, które nie obsługuje rysika, do testowania użyj wersji beta Gboard.
Dodatkowe materiały
- Material Design – pola tekstowe
- Niestandardowe edytory tekstu