React Native常用组件在Android和IOS上的不同

一、Text组件在两个平台上的不同表现

1.1 height与fontSize

1.1.1只指定font,不指定height

  在这种情况下,Text组件在两个平台上显示都正常。

  可以看到,在垂直方向上,Text组件要比字高,上下都留有富余的空间,这样显示出来美观。但如果仔细看,就会发现Android平台的显示下方所留的控件比IOS平台的显示下方所留的空间要小一些。在IOS平台上,上下富余的空间基本相等;而在Android平台上,上方富余空间的高度大概下下方空间的1.5倍。

1.1.2 只指定height,不指定fontSize

  在这种极端情况下,不论height是何值,fontSize的值都是13。

1.1.3 fontSize等于height

  在这种情况下,IOS平台和Android平台的表现不同。在IOS平台上,字的上方还有空间,但字的最下一部分没有显示出来。在Android平台上,这种情况更严重。

1.1.4 height大于fontSize

  在IOS平台上,当height等于fontSize的1.2倍时,显示效果与只指定fontSize、不指定height类似。如果height继续增大,此时Text组件中显示字符的上方空间保持不变,而下方空间会随着height的增大而增大。

  在Android平台上,当height等于fontSize的1.35倍时,显示效果与只指定fontSize、不指定height类似。如果height继续增大,此时Text组件中显示字符的上方空间保持不变,而下方空间会随着height的增大而增大。

1.2 边框在两个平台上的不同表现

  在样式中设置边框,比如“borderWidth:1”。

  在IOS平台上,能够出现预想的边框效果。

  在Android平台上,边框不会出现。

  为了实现在Android平台上Text组件有边框,需要用一个View组件包裹Text组件。而这个View组件只需要有一个样式boderWidth。这种方式可以适用于两个平台。

二、TextInput组件在两个平台上的不同表现

2.1 下划线

  Android平台上,输入框区域有一条下划线,提醒用户这里是一个输入框。

  IOS平台上,输入框区域没有下划线。

2.2 父组件的alignItems属性失效

  在一个组件中声明“alignItems:’center’”时,期望这个组件的子组件(TextInput)能够居中对齐。

  在Android平台上,TextInput组件的父组件样式键“alignItems:’center’”工作正常。

  在IOS平台上,TextInput组件的对齐规则是从最左侧对齐。

  为了让IOS平台的TextInput组件遵从父组件的对齐规则,需要将TextInput组件使用一个没有任何属性的View组件包裹起来。

2.3 fontSzie和height

2.3.1 只指定font、不指定height

  在IOS平台上,如果TextInput组件只指定fontSize,没有指定height,这时height会取默认值0。也就是,在IOS平台上,没有指定样式中height键值的TextInput组件不会显示。

  在Android平台上,如果TextInput组件样式中只指定了fontSize,没有指定height,这时height会根据fontSize动态调整,保证输入字符串的上、下方都有比较多的富余空间。

2.3.2 height等于fontSize

  在Android平台上,当height等于fontSize时,TextInput组件中的字明显被遮盖。而且是上方被遮盖。如果再加入设置“paddingTop:0, paddingBottom:0”,显示正常。

  在IOS平台上,当height等于fontSize时,字的下方被略微遮盖。

2.3.3 height大于fontSize

  在Android平台上,当指定了上、下padding为0时,从height大于fontSize的1.1倍起,可以认为输入的字符串会始终处于TextInput组件区域的中部。

  在IOS平台上,不论是否指定了上、下padding为0,从height大于fontSize的1.1倍起,可以认为输入的字符串会始终处于TextInput组件区域的中部。

2.4 边框

  在TextInput的样式中加入“borderWidth:1”。

  在IOS平台上,正确显示了边框。

  在Android平台上,没有边框。

  让Android平台的TextInput组件正确显示边框的方法与Text类似,把Textinput组件用一个View组件包裹起来。

React Native常用组件在Android和IOS上的不同的更多相关文章

  1. react native 常用组件汇总

    react-native-uploader //文件上传https://github.com/aroth/react-native-uploader jpush-react-native //官方版本 ...

  2. React Native常用组件之TabBarIOS、TabBarIOS.Item组件、Navigator组件、NavigatorIOS组件、React Navigation第三方

    以下内容为老版本React Native,faceBook已经有了新的导航组件,请移步其他博客参考>>[我是传送门] 参考资料:React Navigation  react-native ...

  3. React Native常用组件Image使用

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  4. React Native常用组件之ScrollView

    1. 两个要点 1.1 ScrollView必须有一个确定的高度才能正常工作 它实际上所做的就是将一系列不确定高度的子组件装进一个确定高度的容器(通过滚动操作) 通常有两种做法: 第一种: 直接给该S ...

  5. 一起来点React Native——常用组件之Image

    一.前言 在开发中还有一个非常重要的组件Image,通过这个组件可以展示各种各样的图片,而且在React Native中该组件可以通过多种方式加载图片资源. 二.Image组件的基本用法 2.1 从当 ...

  6. React Native常用组件之ListView组件

    学习iOS开发的同学应该都知道UITableView,几乎每个APP中都有它的存在,而且衍生出各种形态:那么同样,ListView就是在React Native中的tableView,而且更加简单和灵 ...

  7. React Native常用组件之ScrollView组件

    一.前言 从iOS开发的经验来看,scrollView无疑是移动开发中很重要的一个组件,比如后面会学到的ListView就是继承自它.那么,在开发中比如:焦点图.引导页等地方都有其的影子,那接下来我们 ...

  8. React Native常用组件之ListView

    1. ListView常用属性 ScrollView 相关属性样式全部继承 dataSource ListViewDataSource 设置ListView的数据源 initialListSize n ...

  9. 一起来点React Native——常用组件之Touchable系列

    在前面的登录界面中,我们发现所有的组件不会对用户的点击.触摸.拖拽做出合适的响应,这是十分不友好的.那么,在React Native中如何让视图对触发做出合适的响应呢? 一.高亮触摸  Touchab ...

随机推荐

  1. RabbitMQ-高级特性(六)

    存储机制 待... 消息结构 惰性队列 惰性队列会尽可能将消息存入到磁盘中,消费者消费相应的消息才会加载到内存,它可以支持更长的队列 默认情况下生产者消息会尽可能存储到内存中就算设置持久化消息 也会再 ...

  2. [luoguP1507] NASA的食物计划(DP)

    传送门 二位费用背包 ——代码 #include <cstdio> #include <iostream> int n, maxv, maxw; ][]; inline int ...

  3. Ubuntu 16.04添加阿里云源/163源

    添加国内源有个好处,比如下载软件时直接时国内的服务器,速度有保证. 以下是操作方法: 1.备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list. ...

  4. SiteMesh2-decorators.xml文件

    SiteMesh默认使用decorators.xml作为装饰配置文件. decorators.xml顶层元素概览如下: <decorators> <decorator/> &l ...

  5. 1. MissingInteger 最小遗失整数 Find the minimal positive integer not occurring in a given sequence.

    package com.code; import java.util.Arrays; public class Test04_1 { public static int solution(int[] ...

  6. 关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、文件夹结构、设置压缩和对中文文件名称的支持、以及Catalina这个名字的由来……等)

    总结Tomcat的体系架构.处理http请求的过程.安装和配置.文件夹结构.设置压缩和对中文文件名称的支持.以及Catalina这个名字的由来--等. Tomcat和JVM: 一个Tomcat仅仅会启 ...

  7. POJ 1861 Network (Kruskal求MST模板题)

    Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 14103   Accepted: 5528   Specia ...

  8. SQL经典面试题集锦

    1.问题背景 (1)学生表(学号,姓名,年龄,性别) student(S#,Sname,Sage,Ssex) (2)课程表(课程编号,课程名称,教师编号) course(C#,Cname,T#) (3 ...

  9. mybatis Generator生成代码及使用方式(转载)

    转载自:http://www.cnblogs.com/fengzheng/p/5889312.html 文章很棒,很不错,转了.

  10. 測试赛D - The War(有控制范围的贪心)

    D - The War Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit St ...