在输入组件中添加清除按钮

Posted

技术标签:

【中文标题】在输入组件中添加清除按钮【英文标题】:Add clear button inside input component 【发布时间】:2021-12-25 16:06:37 【问题描述】:

我正在尝试在 Input 组件中添加一个明文按钮,但我似乎无法弄清楚。

这是我管理的最接近的,但不太正确。

You can see the clear text icon "X" shorten the input container.

It's suppose to look like this

<Block row noflex space="between" paddingLeft="2x">
  <Input
    flex
    value=search
    iconLeft="search"
    radius=SIZES.base / 2
    style=styles.search
    selectionColor=COLORS.white
    iconStyle=styles.searchIcon
    containerStyle=styles.searchContainer
    color=Utils.rgba(COLORS.white, 0.3)
    onFocus=() => onSearch()
  />
  <Button 
    flex=0
    color="transparent" center middle
    style=styles.clearIconStyle
    onPress=() => setFilters(...filters, address: '', lat: gps.latitude, lng: gps.longitude )
  >
  <Icon name="clear" />
 </Button>
</Block>

const styles = StyleSheet.create(
 right: SIZES.width * 0.07,
 bottom: SIZES.height * 0.003

任何关于如何解决此问题的建议将不胜感激。

【问题讨论】:

你可以创建一个带有flex方向行的视图并在textinput的左右添加按钮,然后在按下十字按钮时清除textinput状态 【参考方案1】:

最下面是我做的,你可以详细说明它来制作图片。

这是下面的代码,但基本上你所做的就是让视图成为线性渐变。然后在内部使用“透明”背景颜色制作另一个视图。

import React from 'react'
import  View, Text,Dimensions  from 'react-native'
import MaskedView from '@react-native-community/masked-view';
import  LinearGradient  from 'expo-linear-gradient';
const width,height = Dimensions.get("window");
import  FontAwesome  from '@expo/vector-icons'; 
import  Entypo  from '@expo/vector-icons'; 

const MaskScreen = () => 
    return (
        <View style=flex:1,justifyContent:"center",alignItems:"center">
           

        /* Gradient block */
        <LinearGradient
        // Background Linear Gradient
        colors=["purple","cyan","blue"]
        style=width:width*.85,height:height/12,flexDirection:'row'
        >
            <View style=flex:10,margin:10,borderRadius:5,backgroundColor:'rgba(219, 229, 255, 0.8)',flexDirection:"row",justifyContent:'space-between',padding:10,alignItems:"center">
                <FontAwesome name="search" size=30 color="black" />
                <Entypo name="cross" size=30 color="black" />
            </View>
            <View style=flex:1>

            </View>
            
        </LinearGradient>
            
        </View>
    )


export default MaskScreen

【讨论】:

以上是关于在输入组件中添加清除按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何动态添加 mdSuffix 组件

清除按钮作为指令或角度 2-8 中的组件

如何在移动web模仿客户端给input输入框添加自定义清除按钮

三种方法为QLineEdit添加清除内容按钮

有没有办法使用 Microsoft 访问中的按钮将数据输入表格并清除所有文本框

如何清除文本输入并在JavaScript中重新聚焦