useAnimatedKeyboard
useAnimatedKeyboard is available since v2.10.0
Android implementation of useAnimatedKeyboard
is an experimental feature.
With the useAnimatedKeyboard
hook, you can create animations based on current keyboard position.
On Android, make sure to set android:windowSoftInputMode
in your AndroidManifest.xml
to adjustResize
. Then, using the useAnimatedKeyboard
hook disables
the default Android behavior (resizing the view to accommodate keyboard) in the whole app. Using values from useAnimatedKeyboard
hook you can handle the keyboard yourself. Unmounting all components that use useAnimatedKeyboard
hook brings back the default Android behavior.
Arguments
options
[AnimatedKeyboardOptions]
Optional object containing additional configuration.
Returns
Hook useAnimatedKeyboard
returns an instance of [AnimatedKeyboardInfo];
Types
AnimatedKeyboardInfo: [object]
Properties:
height
: [SharedValue] contains[number]
contains current height of the keyboardstate
: [SharedValue] contains[enum]
contains current state of the keyboard. Possible states:{ CLOSED, OPEN, CLOSING, OPENING }
AnimatedKeyboardOptions: [object]
Properties:
isStatusBarTranslucentAndroid
[bool] - if you want to use translucent status bar on Android, set this option totrue
. Defaults tofalse
. Ignored on iOS.isNavigationBarTranslucentAndroid
[bool] - if you want to use translucent navigation bar on Android, set this option totrue
. Defaults tofalse
. Ignored on iOS.
Example
function AnimatedKeyboardExample() {
const keyboard = useAnimatedKeyboard();
const translateStyle = useAnimatedStyle(() => {
return {
transform: [{ translateY: -keyboard.height.value }],
};
});
return (
<ScrollView
contentContainerStyle={{
flex: 1,
justifyContent: 'center',
alignItems: 'center',
}}>
<Animated.View style={translateStyle}>
<TextInput />
</Animated.View>
</ScrollView>
);
}