Skip to content

Commit

Permalink
Fix measure callback for TextInput on Nodes
Browse files Browse the repository at this point in the history
Summary: Add a MeasureUtil class

Reviewed By: emilsjolander

Differential Revision: D3467598

fbshipit-source-id: 3ef0da1e4ef16c1f9756653d0aa2e8aa5a598eb1
  • Loading branch information
Ahmed El-Helw authored and Facebook Github Bot 8 committed Jun 22, 2016
1 parent 072ef0a commit c95d3ef
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 18 deletions.
Expand Up @@ -4,15 +4,16 @@ android_library(
name = 'textinput',
srcs = glob(['*.java']),
deps = [
react_native_dep('third-party/java/infer-annotations:infer-annotations'),
react_native_dep('third-party/java/jsr-305:jsr-305'),
react_native_target('java/com/facebook/csslayout:csslayout'),
react_native_target('java/com/facebook/react/bridge:bridge'),
react_native_target('java/com/facebook/react/common:common'),
react_native_target('java/com/facebook/react/views/text:text'),
react_native_target('java/com/facebook/csslayout:csslayout'),
react_native_target('java/com/facebook/react/modules/core:core'),
react_native_target('java/com/facebook/react/uimanager:uimanager'),
react_native_target('java/com/facebook/react/uimanager/annotations:annotations'),
react_native_dep('third-party/java/infer-annotations:infer-annotations'),
react_native_dep('third-party/java/jsr-305:jsr-305'),
react_native_target('java/com/facebook/react/uimanager:uimanager'),
react_native_target('java/com/facebook/react/views/text:text'),
react_native_target('java/com/facebook/react/views/view:view'),
],
visibility = [
'PUBLIC',
Expand Down
Expand Up @@ -13,11 +13,9 @@

import android.text.Spannable;
import android.util.TypedValue;
import android.view.View.MeasureSpec;
import android.view.ViewGroup;
import android.widget.EditText;

import com.facebook.csslayout.CSSConstants;
import com.facebook.csslayout.CSSMeasureMode;
import com.facebook.csslayout.CSSNode;
import com.facebook.csslayout.MeasureOutput;
Expand All @@ -29,6 +27,7 @@
import com.facebook.react.uimanager.UIViewOperationQueue;
import com.facebook.react.uimanager.ViewDefaults;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.views.view.MeasureUtil;
import com.facebook.react.views.text.ReactTextShadowNode;
import com.facebook.react.views.text.ReactTextUpdate;

Expand Down Expand Up @@ -91,21 +90,13 @@ public void measure(
editText.setLines(mNumberOfLines);
}

editText.measure(getMeasureSpec(width, widthMode), getMeasureSpec(height, heightMode));
editText.measure(
MeasureUtil.getMeasureSpec(width, widthMode),
MeasureUtil.getMeasureSpec(height, heightMode));
measureOutput.width = editText.getMeasuredWidth();
measureOutput.height = editText.getMeasuredHeight();
}

private int getMeasureSpec(float size, CSSMeasureMode mode) {
if (mode == CSSMeasureMode.EXACTLY) {
return MeasureSpec.makeMeasureSpec((int) size, MeasureSpec.EXACTLY);
} else if (mode == CSSMeasureMode.AT_MOST) {
return MeasureSpec.makeMeasureSpec((int) size, MeasureSpec.AT_MOST);
} else {
return MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
}
}

@Override
public void onBeforeLayout() {
// We don't have to measure the text within the text input.
Expand Down
@@ -0,0 +1,20 @@
// Copyright 2004-present Facebook. All Rights Reserved.

package com.facebook.react.views.view;

import android.view.View;

import com.facebook.csslayout.CSSMeasureMode;

public class MeasureUtil {

public static int getMeasureSpec(float size, CSSMeasureMode mode) {
if (mode == CSSMeasureMode.EXACTLY) {
return View.MeasureSpec.makeMeasureSpec((int) size, View.MeasureSpec.EXACTLY);
} else if (mode == CSSMeasureMode.AT_MOST) {
return View.MeasureSpec.makeMeasureSpec((int) size, View.MeasureSpec.AT_MOST);
} else {
return View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
}
}
}

0 comments on commit c95d3ef

Please sign in to comment.