美文网首页
# 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