实现下半部分

下半部分如图4-12所示:
图4-12 个人中心底部界面

底部应该使用 ScrollView 组件包裹,这样在一些尺寸比较小的手机,比如 iPhone5 上也可以通过滚动查看全部内容。 ScrollView 组件使用介绍参考官方文档: https://facebook.github.io/react-native/docs/scrollview.html 修改 MyPage.js 代码如下:

//...
import {
    //略 ...
    ScrollView
} from 'react-native';
import SimpleLineIcons from 'react-native-vector-icons/SimpleLineIcons';

export default class MyPage extends Component<{}> {

    render() {
        return (
            <View style={styles.container}>
                <!--略-->
                <ScrollView>
                    <View style={[styles.rowItem, {height: px2dp(100), marginTop: px2dp(32)}]}>
                        <TextFix style={{fontSize: px2dp(30), color: '#333333', flex: 1}}>购买的订单</TextFix>
                        <TouchableOpacity style={{flexDirection: 'row', alignItems: 'center'}}>
                            <TextFix
                                style={{fontSize: px2dp(24), color: '#999999', marginRight: px2dp(24)}}>购买的订单</TextFix>
                            <SimpleLineIcons
                                name={'arrow-right'}
                                size={16}
                                color={'#999'}/>
                        </TouchableOpacity>
                    </View>
                    <View style={[styles.rowItem, {height: px2dp(140)}]}>
                        <TouchableOpacity style={styles.countItem}>
                            <Image source={require('../images/to_pay.png')}/>
                            <TextFix style={{fontSize: px2dp(24), color: '#333333', marginTop: px2dp(12)}}>待付款</TextFix>
                        </TouchableOpacity>
                        <TouchableOpacity style={styles.countItem}>
                            <Image source={require('../images/to_ship.png')}/>
                            <TextFix style={{fontSize: px2dp(24), color: '#333333', marginTop: px2dp(12)}}>待发货</TextFix>
                        </TouchableOpacity>
                        <TouchableOpacity style={styles.countItem}>
                            <Image source={require('../images/to_receive.png')}/>
                            <TextFix style={{fontSize: px2dp(24), color: '#333333', marginTop: px2dp(12)}}>待收货</TextFix>
                        </TouchableOpacity>
                        <TouchableOpacity style={styles.countItem}>
                            <Image source={require('../images/to_finish.png')}/>
                            <TextFix style={{fontSize: px2dp(24), color: '#333333', marginTop: px2dp(12)}}>未评价</TextFix>
                        </TouchableOpacity>
                        <TouchableOpacity style={styles.countItem}>
                            <Image source={require('../images/to_issue.png')}/>
                            <TextFix style={{fontSize: px2dp(24), color: '#333333', marginTop: px2dp(12)}}>退换货</TextFix>
                        </TouchableOpacity>
                    </View>
                    <TouchableOpacity style={[styles.rowItem, styles.topBorder, {height: px2dp(120)}]}>
                        <TextFix style={{fontSize: px2dp(32), color: '#333333', flex: 1}}>我的地址</TextFix>
                        <SimpleLineIcons
                            name={'arrow-right'}
                            size={20}
                            color={'#999'}/>
                    </TouchableOpacity>
                    <TouchableOpacity style={[styles.rowItem, styles.topBorder, {height: px2dp(120)}]}>
                        <TextFix style={{fontSize: px2dp(32), color: '#333333', flex: 1}}>账户与安全</TextFix>
                        <SimpleLineIcons
                            name={'arrow-right'}
                            size={20}
                            color={'#999'}/>
                    </TouchableOpacity>
                    <TouchableOpacity style={[styles.rowItem, styles.topBorder, {height: px2dp(120)}]}>
                        <TextFix style={{fontSize: px2dp(32), color: '#333333', flex: 1}}>客服与帮助</TextFix>
                        <SimpleLineIcons
                            name={'arrow-right'}
                            size={20}
                            color={'#999'}/>
                    </TouchableOpacity>
                    <TouchableOpacity style={[styles.rowItem, styles.topBorder, {height: px2dp(120)}]}>
                        <TextFix style={{fontSize: px2dp(32), color: '#333333', flex: 1}}>意见反馈</TextFix>
                        <SimpleLineIcons
                            name={'arrow-right'}
                            size={20}
                            color={'#999'}/>
                    </TouchableOpacity>
                </ScrollView>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    //略 ...
    countItem: {
        justifyContent: 'center',
        alignItems: 'center',
        flex: 1
    },
    rowItem: {
        marginHorizontal: px2dp(24),
        flexDirection: 'row',
        alignItems: 'center'
    },
    topBorder: {
        borderTopWidth: px2dp(1),
        borderTopColor: '#f5f5f5'
    }
});

上面代码可以分为三部分——1.购买的订单,2.订单状态,3.我的地址等四个条目。 以我的地址条目介绍,通过设置 TextFix 组件样式 flex:1 ,使当前控件直接沾满了容器剩余全部空间,箭头组件直接被挤到了最右侧,这种技巧是非常实用的。

查看代码

如果你已经从 GitHub 上克隆了这个程序的 Git 仓库,那么可以执行 git checkout 4d 签出程序的这个版本。

results matching ""

    No results matching ""