为反应本机 TextInput 设置边框

Setting a border for react native TextInput

使用 React native 0.26,

我的组件是这样的

const Search = () => {
    return (
      <View style={styles.backgroundImage}>
        <TextInput style={styles.textInput} onChangeText={(text) => console.log(text)} placeholder={"Enter Search Term"}/>
      </View>
    )
}

我的风格:

const styles = StyleSheet.create({
  backgroundImage: {
    flex : 1,
    flexDirection: "column",
    justifyContent: 'center',
    alignItems: 'center'
  },
  textInput: {
    justifyContent: "center",
    alignItems: "stretch",
    borderRightWidth: 30,
    borderLeftWidth: 30,
    height: 50,
    borderColor: "#FFFFFF",
  }
})

我面临的问题是

  1. 右边框和左边框似乎没有任何效果,占位符文本刚好从左边缘开始。
  2. TextInput 的背景是"grey",与View 的背景相同。我原以为它默认是白色的,(感觉透明)。
  3. 使用 iOS 模拟器如何调出键盘,我想设置 returnKeyType 并查看键盘的外观(并在 onSubmitEditing 上有一些代码并进行测试)。

截图如下:

1 除非启用多行,否则不能直接在 TextInput 上声明特定边框(例如,除非启用 multiline={true},否则 borderLeftWidth 将不起作用,但 borderWidth 会起作用),但是您可以将 TextInput 包裹在 View 中并为其添加边框。

inputContainer: {
  borderLeftWidth: 4,
  borderRightWidth: 4,
  height: 70
},
input: {
  height: 70,
  backgroundColor: '#ffffff',
  paddingLeft: 15,
  paddingRight: 15
}

2 您需要为 TextInput 声明一个 backgroundColor

3 要显示本机键盘,您需要转到模拟器菜单并断开硬件连接。转到硬件 -> 键盘 -> 连接硬件键盘,将其关闭。

react-native: 0.61.5 开始,您可以直接在 TextInput 上设置 borderBottomWidth。就像下面的内联样式或者如果你想要单独的样式对象。

  style = {{borderBottomWidth : 1.0}}

默认情况下,boderWidth 将设置为 0。因此使用 borderWidth : 5 默认值(顶部、右侧、底部、左侧)。

如果您想单独分配宽度,您可以选择

style = {{
borderStartWidth : 2
borderEndWidth : 3
borderTopWidth : 1
boderLeftWidth: 2
borderRightWidth: 3
borderBottomWidth : 4
}}