2017-07-27 8 views
2

1行のテキストをレンダリングするカスタムネイティブコンポーネントを作成したいとします。このテキストの長さは動的で、書体とサイズは設定可能です。AndroidでReact Nativeのカスタムネイティブコンポーネントを測定する方法

カスタムコンポーネントを標準<View />に配置すると、View.onMeasure(ネイティブ)の指定サイズの制約は高さがゼロで、これはMeasureSpec.EXACTLYです。 View.onMeasureにゼロ以外の高さを戻しても何も起こりません。

カスタムネイティブビューの測定を許可し、これを測定とレイアウト中にReact Nativeに与える方法を教えてください。

+0

「minHeight」を試しましたか? –

答えて

2

多くの時間と労力の後、私は答えを見つけました。

ViewManager.getShadowNodeClassを無効にし、ReactShadowNodeのカスタム実装を提供する必要があります。

ように;

public class CustomShadowNode extends LayoutShadowNode implements YogaMeasureFunction { 
    public CustomShadowNode() { 
     this.setMeasureFunction(this); 
    } 

    @Override 
    public long measure(
     YogaNode node, 
     float width, YogaMeasureMode widthMode, 
     float height, YogaMeasureMode heightMode) { 
     return YogaMeasureOutput.make(0, 0); 
    } 
} 

標準レイアウトとスタイリング小道具を扱うように見えるように私はLayoutShadowNodeを使用。

私は問題hereに関する詳細を書きました。

+0

私は自分自身でこれを試しています。私は、私のシャドウノードのコンストラクタを取得することさえ知っていません。 –

関連する問題