美文网首页
react-native开发实例之仿美团头部导航

react-native开发实例之仿美团头部导航

作者: sleepforests | 来源:发表于2016-12-15 23:37 被阅读1347次

今天我要对美团的头部导航进行山寨

美团页面具体的效果图如下:

Paste_Image.png

山寨效果图

ios.gif android.gif

具体的代码如下:


'use strict';


import React, {Component} from 'react';
import {
    Alert,
    View,
    Text,
    TextInput,
    StyleSheet,
    Platform,
    NavigatorIOS,
    TouchableOpacity,
}from 'react-native';
import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome';

export default  class Header extends Component {

    _onPressCity(e) {

        Alert.alert(
            'alert',
            '点击了城市',
        );

    }

    _onPressSearch(e) {
        Alert.alert(
            'alert',
            '点击了搜索',
        );
    }

    _onPressIcon(e) {
        Alert.alert(
            'alert',
            '点击了icon',
        );
    }

    render() {
        return (
            <View style={styles.container}>
                
                <TouchableOpacity onPress={e=>this._onPressCity(e)}>
                    <View style={styles.cityDropdown}>
                        <Text style={styles.cityTitle}>三亚</Text>
                        <FontAwesomeIcon name="angle-double-down" color="#ffffff" size={20}/>
                    </View>
                </TouchableOpacity>


                <View style={styles.searchBar}>
                    <TouchableOpacity onPress={e=>this._onPressSearch(e)}>
                        {
                            Platform.OS === 'ios' ? (
                                <TextInput editable={false} style={styles.searchTextInput}
                                           placeholder={'请输入公寓名称搜索...'}></TextInput>) : (
                                <Text style={styles.searchTextInput}>请输入公寓名称搜索...</Text>)
                        }
                    </TouchableOpacity>
                </View>


                <View style={styles.rightIcons}>
                    <TouchableOpacity onPress={e=>this._onPressIcon(e)}>
                        <FontAwesomeIcon name="qrcode" color="#ffffff" size={20}/>
                    </TouchableOpacity>
                </View>


                <View style={styles.rightIcons}>
                    <TouchableOpacity onPress={e=>this._onPressIcon(e)}>
                        <FontAwesomeIcon name="bell" color="#ffffff" size={20}/>
                    </TouchableOpacity>
                </View>

            </View>
        );
    }
}


const styles = StyleSheet.create({
    container: {
        flexDirection: 'row',
        backgroundColor: '#e75404',
        paddingTop: Platform.OS === 'ios' ? 20 : 0,  // 处理iOS状态栏
        height: Platform.OS === 'ios' ? 60 : 40,   // 处理iOS状态栏
        paddingLeft: 5,
        paddingRight: 5,
        paddingBottom: 10,
    },
    cityDropdown: {
        marginTop: 5,
        flexDirection: 'row',
        paddingTop: 5,
        marginLeft: 10,
        marginRight: 5,
        backgroundColor: '#e75404',
    },
    cityTitle: {
        color: '#ffffff',
        paddingTop: Platform.OS === 'ios' ? 2 : 0,
        marginRight: 2,
    },
    searchBar: {
        height: 50,
        flex: 1,
    },
    searchTextInput: {
        borderRadius: 10,
        textAlignVertical: 'top',
        color: '#ccc',
        backgroundColor: 'white',
        height: 25,
        paddingLeft: 8,
        paddingTop: 5,
        marginRight: 5,
        marginTop: 6,
        fontSize: 12,
        textDecorationLine: 'none',
    },
    rightIcons: {
        marginTop: 5,
        paddingTop: 5,
        marginLeft: 2,
        marginRight: 5,
    }

});

问题几点

  • ios的头部和android的头部高度、paddingTop的设置是不一样的,通过Platform.OS来判断后进行设置;
  • 文本输入框在android下面有一个下划线,没法去掉,只能在android下使用Text
  • android下text框支持borderRadius,而ios的text不支持borderRadius,故在ios下使用textinput
  • 这里在小米4s上测试效果可行,但是android估计适配还得调整,searchbar区域最好使用图片+text+图片的方式保证兼容性更好

使用到的开源项目

相关文章

网友评论

      本文标题:react-native开发实例之仿美团头部导航

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