返回 解决方法二:给ScrollView设置属性
EditText嵌套ScrollView后滑动不灵?这样做能让内容滑动更流畅!
Android
2023-09-01 05:21:34
无论在Android还是iOS开发中,我们经常会遇到要在ScrollView
中放入EditText
控件的需求。但很多时候,我们会发现EditText
无法正常滑动。这是因为当ScrollView
获取到触摸事件后,事件就会被消费掉,传递不到内部控件,导致EditText
无法滑动。
如果ScrollView嵌套了EditText,那么EditText就不能滑动。这是因为ScrollView将滑动事件消费了,导致滑动事件没有向下传递,EditText根本没有接收到该事件。看到这里,相信大家已经想到好几种解决方法了吧。下面给出我的建议。
解决方法一:将EditText放在LinearLayout中,再将LinearLayout放在ScrollView中
这是最简单的一种解决方法,只需要将EditText
放在LinearLayout
中,再将LinearLayout
放在ScrollView
中即可。这样一来,EditText
就能滑动啦!
<ScrollView>
<LinearLayout>
<EditText />
</LinearLayout>
</ScrollView>
解决方法二:给ScrollView设置属性android:fillViewport="true"
另一种解决方法是给ScrollView
设置属性android:fillViewport="true"
。这样一来,ScrollView
就会填满整个屏幕,并且EditText
就可以滑动啦!
<ScrollView android:fillViewport="true">
<EditText />
</ScrollView>
解决方法三:自定义ScrollView,重写onInterceptTouchEvent方法
如果以上两种方法都不行,那么你可以自定义一个ScrollView
,重写onInterceptTouchEvent
方法,在该方法中返回false
,这样一来,ScrollView
就不会消费滑动事件,EditText
就能滑动啦!
public class MyScrollView extends ScrollView {
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}
}
总结
以上三种方法都可以解决ScrollView嵌套EditText无法滑动的问题。具体使用哪种方法,可以根据实际情况来选择。