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 wprowadzania tekstu na Androidzie, w tym komponenty EditText
i widżety tekstowe WebView
, domyślnie obsługują wprowadzanie danych w stylu.
Jeśli jednak aplikacja wymaga niestandardowych pól do wprowadzania tekstu (patrz Niestandardowe edytory tekstu) lub ma złożony układ z polami do wpisywania tekstu nakładającymi się na powierzchnię do rysowania, musisz ją dostosować.
EditText
Pismo odręczne rysikiem jest domyślnie włączone we wszystkich polach EditText
na Androidzie 14 i nowszych. Tryb pisma odręcznego włącza się w przypadku elementu EditText
, gdy wykryte zostanie zdarzenie ruchu rysika w zakresie pisma odręcznego w widoku.
Ograniczenia pisma odręcznego obejmują 40 dp pionowego dopełnienia i 10 dp poziomego dopełnienia wokół widoku. Dostosuj granice pisma odręcznego za pomocą setHandwritingBoundsOffsets()
.
Wyłącz pismo odręczne w setAutoHandwritingEnabled(false)
.
![Pole do wprowadzania danych otoczone prostokątem, które wskazuje granice wykrywania zdarzeń ruchu rysika.](https://developer.android.com/static/images/develop/ui/compose/touch-input/stylus-input/shared/edittext_handwriting_bounds.png?authuser=7&hl=pl)
EditText
pola.
Przekazywanie danych wejściowych
Aplikacje mogą wyświetlać zastępcze elementy interfejsu, które wyglądają jak pola do wprowadzania tekstu, ale w rzeczywistości są tylko statycznymi elementami interfejsu, które nie mają możliwości wprowadzania tekstu. Typowym przykładem są pola wyszukiwania. Kliknięcie statycznego elementu interfejsu uruchamia przejście do nowego interfejsu, który zawiera funkcjonalne pole do wprowadzania tekstu.
Przekazywanie dostępu do wprowadzania rysika
Używaj interfejsów API do przekazywania pisma odręcznego, aby obsługiwać pismo odręczne rysikiem w zastępczych polach do wprowadzania danych (patrz setHandwritingDelegatorCallback()
i setIsHandwritingDelegate()
). Zastępczy element interfejsu jest skonfigurowany tak, by przekazywać pismo odręczne do działającego pola do wprowadzania danych, 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 rysikiem nad widokiem zastępczego pola do wprowadzania tekstu wywołuje wywołanie zwrotne.
Wywołanie zwrotne aktywuje przejście interfejsu, aby pokazać i zaznaczyć funkcjonalne pole danych wejściowych. Implementacja wywołania zwrotnego zwykle jest taka sama jak implementacja odbiornika kliknięć w elemencie zastępczym. Gdy funkcjonalne pole do wprowadzania danych utworzy InputConnection
, tryb pisma odręcznego stylu jest uruchamiany.
Material Design
Biblioteka com.google.android.material.search
udostępnia klasy SearchBar
i SearchView
, które ułatwiają implementację zastępczego wzorca interfejsu użytkownika.
Widoki zastępcze i widoki wyszukiwania funkcjonalnego są połączone z widokiem danych setUpWithSearchBar()
.
Przekazywanie dostępu do pisma odręcznego jest konfigurowane w bibliotece materiałów bez konieczności dodatkowego programowania w aplikacji.
Zakładaj się na powierzchnie do rysowania
Jeśli aplikacja ma powierzchnię do rysowania z nałożonym na nią polem tekstowym, być może trzeba będzie wyłączyć pismo odręczne rysikiem, aby umożliwić użytkownikowi rysowanie. Zobacz setAutoHandwritingEnabled()
.
Testowanie
Pismo odręczne rysikiem jest obsługiwane na urządzeniach z Androidem 14 i nowszym wyposażonym w zgodne urządzenie wejściowe rysikiem oraz z edytorem metod wprowadzania (IME), który obsługuje interfejsy API pisma odręcznego rysikiem w Androidzie 14.
Jeśli nie masz urządzenia wejściowego rysika, wykonaj symulację wprowadzania rysika na dowolnym urządzeniu z dostępem roota (w tym emulatorami) 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 stylu, użyj Gboard w wersji beta do testów.
Dodatkowe materiały
- Material Design – pola tekstowe
- Niestandardowe edytory tekstu