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.text.style.ForegroundColorSpan;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
|
@ -95,6 +96,24 @@ public class ReactEditText extends EditText {
|
||||||
mKeyListener = new InternalKeyListener();
|
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.
|
// 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
|
// 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
|
// next layout() to be called. However, we do not perform a layout() after a requestLayout(), so
|
||||||
|
|
Loading…
Reference in New Issue