Expo React Elements SearchBar组件输入值样式问题
Expo React Elements SearchBar组件输入值样式问题
嗨,我之前也碰到过一模一样的问题!这大概率是react-native-elements的SearchBar组件内部的文本容器默认允许滚动导致的,给你几个亲测有效的解决办法:
自定义输入框样式,限制文本滚动
直接给SearchBar的inputStyle添加垂直居中和溢出限制的属性,从根源上阻止文本上下滚动:<SearchBar placeholder='please input words...' onChangeText={updateSearch} value='' inputStyle={{ textAlignVertical: 'center', // 让文本垂直居中,消除滚动空间 overflow: 'hidden', // 兜底限制溢出内容 whiteSpace: 'nowrap' // 防止文本换行引发滚动 }} />覆盖外层容器样式,彻底封锁滚动权限
有时候不仅输入框本身,SearchBar的外层容器也可能带有默认的滚动属性,把容器和输入容器的overflow都设为hidden:<SearchBar placeholder='please input words...' onChangeText={updateSearch} value='' containerStyle={{ overflow: 'hidden' }} inputContainerStyle={{ overflow: 'hidden' }} />检查父组件的滚动设置
- 如果你把SearchBar放在ScrollView、FlatList这类滚动组件里,要确保父组件没有设置可能导致子元素滚动的特殊样式
- 给SearchBar的直接父容器添加
style={{ overflow: 'hidden' }},防止父组件的滚动特性影响到SearchBar
要是上面的方法还没解决,可以针对iOS平台单独调整行高(iOS上SearchBar的默认行高可能会留出滚动空间):
import { Platform } from 'react-native'; <SearchBar placeholder='please input words...' onChangeText={updateSearch} value='' inputStyle={{ textAlignVertical: 'center', overflow: 'hidden', whiteSpace: 'nowrap', ...Platform.select({ ios: { lineHeight: 22 } // 固定行高,避免文本可滚动 }) }} />
先试试第一种方法哦,大部分情况下都能快速解决这个烦人的滚动问题~
内容来源于stack exchange
相关产品推荐
相关产品推荐

