make sure multiline TextInput is scrollable within a ScrollView
Reviewed By: bestander Differential Revision: D3668840 fbshipit-source-id: 349314588035935543944ea6a8ddcb730c3ee85e
This commit is contained in:
parent
5405aeb2a3
commit
b05c7f792f
|
@ -29,6 +29,7 @@ import android.text.style.BackgroundColorSpan;
|
|||
import android.text.style.ForegroundColorSpan;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.EditText;
|
||||
|
@ -95,6 +96,24 @@ public class ReactEditText extends EditText {
|
|||
mKeyListener = new InternalKeyListener();
|
||||
}
|
||||
|
||||
/**
|
||||
* Make sure multiline text input can be scrolled within a ScrollView
|
||||
*/
|
||||
@Override
|
||||
public boolean dispatchTouchEvent(MotionEvent ev) {
|
||||
switch (ev.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
// Disallow ScrollView to intercept touch events.
|
||||
this.getParent().requestDisallowInterceptTouchEvent(true);
|
||||
break;
|
||||
case MotionEvent.ACTION_UP:
|
||||
// Allow ScrollView to intercept touch events.
|
||||
this.getParent().requestDisallowInterceptTouchEvent(false);
|
||||
break;
|
||||
}
|
||||
return super.dispatchTouchEvent(ev);
|
||||
}
|
||||
|
||||
// After the text changes inside an EditText, TextView checks if a layout() has been requested.
|
||||
// If it has, it will not scroll the text to the end of the new text inserted, but wait for the
|
||||
// next layout() to be called. However, we do not perform a layout() after a requestLayout(), so
|
||||
|
|
Loading…
Reference in New Issue