在我的 React Native 应用程序的标题中,我有一个条件图标和一个 搜索栏。
static navigationOptions = ({ navigation }) => {
const { params = {} } = navigation.state;
return {
headerTitle: (
<View
style={{
flex: 1,
backgroundColor: Platform.OS === 'ios' ? '#e54b4d' : '',
alignItems: 'center',
flexDirection: 'row',
paddingHorizontal: 10,
height: StatusBar.currentHeight,
}}>
{params.isIconTriggered && <Icon name="chevron-left" size={28} />}
<SearchBar
round
platform={'default'}
placeholder="Search"
containerStyle={{
flex: 1,
backgroundColor: 'transparent',
}}
/>
</View>
),
headerStyle: {
backgroundColor: '#e54b4d',
},
};
};
通常,搜索栏将占据标题的整个宽度,这正是我想要的。如果条件 isIconTriggered
为真,一个图标将出现在 Searchbar 前面,并且 SearchBar 的宽度将收缩到足以使图标旁边可见。
但是,发生这种情况时没有过渡或动画,感觉起来也不好看。我想向搜索栏添加一个动画,以便在触发条件并出现图标时宽度逐渐平滑地缩小。
这有可能实现吗?我该如何实现?
原文由 EDJ 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试学习 React Native 的 Animated API。
这是我用按钮触发器完成的方法。
使用 react-native-elements SearchBar 组件的解决方案。将 SearchBar 组件包装在 Animated.View 中。明确地为搜索栏设置动画
像这样: