1. 程式人生 > >ReactNative系列之十九表情emoji與文字混排的兩種方案實現

ReactNative系列之十九表情emoji與文字混排的兩種方案實現

方案一:

使用react-native-emoji這個庫

優點:文字和圖片混排單行多行,居中顯示都正常

缺點:依賴手機的環境,只能根據系統裡的表情進行顯示?不能自定義表情。。。emoji...這種方案基本不可行,使用者體驗差


方案二:

<Text>

    <Text>內容</Text>

    <Image source={{...}}/>  //表示要插入的表情

</Text>

這種方案可以解決文字超一行後,表情能自動換行,但圖片會較文字偏上一些。


解決辦法:在iOS上設定padding 會使表情和文字都居中

在Android上,Image使用Fresco渲染,只實現了width和height兩個屬性,並且表情按字型的最高開始渲染。

解決方法:在FrescoBasedReactTextInlineImageSpan.java中的draw方法中,重新計算渲染的表情的位置即可,新增行

    if (y != bottom) { //如果相等則為純表情,否則為表情和文字混合
      transY = transY + (bottom - y) / 2 + 4; // [wk] 最右上角y值+ (最高度/2) + 字型一般的padding距離
    }


問題解決!!