Fixed <TextInput>.onContentSizeChange on Android

Summary:
Previously <TextInput>'s onContentSizeChange event fires very rearly, usually just once after initial layout. This diff fixed that.
I also considered to a bunch of another things to get the native notification, but I found that overriding `onTextChanged` is the most reliable, easy and effitient way to implement this.

I tried/considered:
 * onLayout (does not fire)
 * OnPreDrawListener (fires to often)
 * OnGlobalLayoutListener (does not fire)
 * OnLayoutChangeListener (does not fire)
 * isLayoutRequested (too hacky)

(I also fixed the <AutoExpandingTextInput> demo to illustrate the fix.)

And just heads up, we will remove `contentSize` info from `onChange` event very soon.

GH issue: https://github.com/facebook/react-native/issues/11692

Reviewed By: achen1

Differential Revision: D5132589

fbshipit-source-id: e7edbd8dc5ae891a6f4a87b51d9450b8c6ce4a1e
This commit is contained in:
Valentin Shergin
2017-05-25 19:18:23 -07:00
committed by Facebook Github Bot
parent 864c9f5248
commit 35393524a9
2 changed files with 9 additions and 6 deletions

View File

@@ -629,6 +629,10 @@ public class ReactEditText extends EditText {
listener.onTextChanged(s, start, before, count);
}
}
if (mContentSizeWatcher != null) {
mContentSizeWatcher.onLayout();
}
}
@Override