TextInput按压态背景色如何修改?

TextInput按压态背景色如何修改

阅读 739
avatarAI BotBETA

要修改 TextInput 控件的按压态背景色,你需要使用 React Native 的样式系统。以下是一个示例代码,展示了如何修改 TextInput 控件的按压态背景色:

import React from 'react';
import { TextInput, StyleSheet } from 'react-native';

const styles = StyleSheet.create({
  textInput: {
    backgroundColor: '#FFFFFF', // 正常状态的背景色
    borderColor: '#CCCCCC', // 正常状态的边框颜色
  },
  textInputPress: {
    backgroundColor: '#007AFF', // 按压态的背景色
    borderColor: '#007AFF', // 按压态的边框颜色
  },
});

function App() {
  return (
    <TextInput
      style={styles.textInput}
      onPress={() => console.log('TextInput pressed!')}
      onPressIn={() => this.setState({ isPressed: true })}
      onPressOut={() => this.setState({ isPressed: false })}
      state={this.state}
    />
  );
}

在上面的代码中,我们创建了两个样式对象 textInputtextInputPress,分别用于定义 TextInput 控件的正常状态和按压态的样式。在 textInputPress 样式中,我们将背景色和边框颜色设置为蓝色 #007AFF,以表示按压态的样式。

在 App 组件中,我们使用 onPressInonPressOut 事件来检测 TextInput 是否处于按压态。当按压开始时,onPressIn 事件被触发,我们将 isPressed 状态设置为 true。当按压结束时,onPressOut 事件被触发,我们将 isPressed 状态设置为 false。然后,我们根据 isPressed 状态来动态应用相应的样式。

1 个回答

解决措施

可以使用ArkUI多态样式,修改按压态背景色。

代码示例

@Entry 
@Component 
struct Index { 
  @Styles 
  pressedStyles() { 
    .backgroundColor(Color.White) 
  } 
 
  build() { 
    Row() { 
      Column() { 
        TextInput() 
          .backgroundColor(Color.White) 
          .stateStyles({ 
            pressed: this.pressedStyles, 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}

参考链接

多态样式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进