Кнопка не отображается поверх cardView в Android, но работает в iOS в режиме естественного реагирования - PullRequest
2 голосов
/ 08 ноября 2019

Я создаю кнопку над картой ViewView, она работает в iOS -

enter image description here

Но она не работает так же в Android, этовыглядит как --- enter image description here

Мой код для создания этого -

  <View>
                        <Card containerStyle={{height: 100, borderRadius: 8, borderWidth: 0}}>
                            <View
                                style={[a_styles.horizontal_space_between_verticalCenter, {backgroundColor: 'transparent',}]}>
                                <View style={{
                                    backgroundColor: 'transparent',
                                    flexDirection: 'row',
                                    justifyContent: 'flex-start',
                                    alignItems: 'center',
                                }}>
                                    <Text numberOfLines={7} style={{
                                        fontSize: 13,
                                        color: 'black',
                                        fontWeight: '500',
                                        width: responsiveWidth(50)
                                    }}>{item.name}</Text>
                                    <Text style={{fontSize: 10, color: 'black'}}></Text>
                                </View>


                                <View style={{
                                    backgroundColor: 'transparent',
                                    flexDirection: 'row',
                                    justifyContent: 'flex-start',
                                    alignItems: 'center',
                                }}>
                                    <Text style={{
                                        fontSize: 13,
                                        color: 'black',
                                        fontWeight: '100'
                                    }}>{translate("price")}</Text>
                                    <Text
                                        style={{
                                            fontSize: 13,
                                            fontWeight: '600',
                                            color: 'black'
                                        }}>{item.price}/-</Text>
                                </View>

                            </View>


                            <View style={{
                                backgroundColor: 'transparent',
                                width: "25%",
                                alignSelf: "flex-end",

                                alignItems: 'flex-end',
                            }}>
                                <TouchableOpacity style={{backgroundColor: "transparent"}} onPress={() => {
                                    this.viewAll(item.services);
                                }}>
                                    <Text style={{
                                        fontSize: 12,
                                        backgroundColor: "transparent",
                                        fontWeight: '500',
                                        color: Colors.appDarkBlueColor,
                                        paddingBottom: responsiveHeight(1.5)
                                    }}>{translate("view_details")}</Text>
                                </TouchableOpacity>
                            </View>


                            {item.discount != 0 &&
                            <View style={{

                                justifyContent: 'flex-end', backgroundColor: 'blue'
                            }}>
                                <Text style={{
                                    textAlign: 'right',
                                    fontSize: 10, color: 'green',
                                    textDecorationLine: 'line-through',
                                    textDecorationStyle: 'solid',
                                    fontWeight: '100'
                                }}>{item.discount} {translate('sr')}</Text>
                            </View>
                            }

                            <View style={{height: 7}}/>


                        </Card>

                        <SelectRentalButton isSelected={item.isSelected} onPress={() => {
                            return this.selectItem(item);
                        }}/>

                    </View>

Я использую этот компонент в качестве кнопки

 <SelectRentalButton isSelected={item.isSelected} onPress={() => {
                        return this.selectItem(item);
                    }}/>

код для этого компонента -

 <TouchableWithoutFeedback style={{ backgroundColor:"transparent"}} onPress={()=>{
            if(this.props.onPress()){
                this.setState({isSelected:!this.state.isSelected});
            }
        }}>

            <View>
                <View style={{
                    justifyContent: 'center',
                    alignItems: 'center',
                    flex: 1,
                    elevation: 2,
                    backgroundColor: 'white',
                    height: 36,
                    marginLeft: 30,
                    marginRight: 30,
                    marginTop:-20,
                    borderRadius: 18,
                    borderWidth: 1,
                    borderColor: Colors.appDarkBlueColor,
                }}>

                    <Text style={{
                        color: ALL_COLORS.theme_blue,
                        fontSize: responsiveFontSize(2),
                        fontWeight: '600'
                    }}>{translate("selected")}</Text>


                    {
                        this.state.isSelected &&

                        <View style={{
                            backgroundColor: Colors.appDarkBlueColor,
                            borderRadius: 20, height: 36,
                            width: 70,
                            justifyContent: 'center',
                            alignItems: 'center',
                            position: 'absolute',
                            right: -1, top: 0
                        }}>
                            <Image source={require('../Images/cancel.png')}/>
                        </View>
                    }

                </View>
            </View>
        </TouchableWithoutFeedback>)

this is the problem in android device , but correctly working in iOS device

Я пробовал

Положение: абсолютное

в кнопке, но он не работает.

- это компонент, созданный в другом классе.

1 Ответ

1 голос
/ 08 ноября 2019

попробуйте это

<TouchableWithoutFeedback style={{ backgroundColor:"transparent",elevation:2}} onPress={()=>{
        if(this.props.onPress()){
            this.setState({isSelected:!this.state.isSelected});
        }
    }}>

это сработало для меня.

...