美文网首页
# ReactNative 官方组件 ScrollView 无法

# ReactNative 官方组件 ScrollView 无法

作者: Zeayal | 来源:发表于2018-10-25 12:02 被阅读52次

    ReactNative 官方组件 ScrollView 无法直接指定高度的问题

    图一.png

    代码块1:图一容器组件代码

    class ... {
       render() {
            const { countryVisa, currentPersonTypeindex } = this.state;
            return (
                <View style={styles.container}>
                    <TabHeader
                        list={countryVisa.Material}
                        currentIndex={currentPersonTypeindex}
                        onPressHeaderItem={this._onPressHeaderItem}
                    />
                    <VisaMaterialList list={countryVisa.Material && countryVisa.Material[currentPersonTypeindex]} />
                </View>
            )
        }
    }
    
    const styles = StyleSheet.create({
        container: {
            backgroundColor: Colors.grayBGColor,
            flex: 1,
        }
    })
    
    

    代码块2: Heder 组件代码

    const TabHeader = ({ list, currentIndex, onPressHeaderItem }) => (
            <ScrollView horizontal={true}  contentContainerStyle={styles.contentContainerStyle}>
                {list.map((item, index) => <TabHeaderItem title={item.Cname || item.ApplyName} selected={currentIndex == index} onPress={() => onPressHeaderItem(index)} />)}
            </ScrollView>
    )
    const styles = StyleSheet.create({
        contentContainerStyle: {
            width: Layout.window.width,
            height: 40,
            backgroundColor: Colors.whiteColor,
            borderBottomWidth: StyleSheet.hairlineWidth,
            borderBottomColor: Colors.gray400,
        }
    })
    

    原因: :官方组件 ScrollView 默认会撑满父级容器高度。
    解决方案:官方组件需要在 ScrollView 外面嵌套父级组件来约束高度,比如嵌套一个 View 设置 height 为40。

    代码块3:图一修改后Heder 组件代码

    const TabHeader = ({ list, currentIndex, onPressHeaderItem }) => (
        <View style={styles.container}>
            <ScrollView horizontal={true} contentContainerStyle={styles.contentContainerStyle}>
                {list.map((item, index) => <TabHeaderItem title={item.Cname || item.ApplyName} selected={currentIndex == index} onPress={() => onPressHeaderItem(index)} />)}
            </ScrollView>
        </View>
    )
    const styles = StyleSheet.create({
        container: {
            height: 40,
        },
        contentContainerStyle: {
            width: Layout.window.width,
            backgroundColor: Colors.whiteColor,
            borderBottomWidth: StyleSheet.hairlineWidth,
            borderBottomColor: Colors.gray400,
        }
    })
    
    
    代码块3 运行结果.png

    相关文章

      网友评论

          本文标题:# ReactNative 官方组件 ScrollView 无法

          本文链接:https://www.haomeiwen.com/subject/rhvqtqtx.html