解决EditText多行编辑时在ScrollView中无法滚动的问题

这是一件很郁闷的事,一个傻x给我找事,说我做的应用不好用,以为自己是傻逼产品经理吗?管的事真不少。各种问题,各种向老大反应,连服务器的端的问题都来找我,以为我是救世主啊,吐槽完了转入正题。

鉴于以前解决ListView,GridView以及ViewPager在ScrollView滚动问题的解决经验,我通过extends EditText来重写它的onTouchEvent方法来解决这个问题。

首先要显示多行编辑文本,先在.xml文件中配EditText的下面几个属性:

android:enabled="true"
android:gravity="top"
android:minLines="5"
android:maxLines="10"
android:scrollbars="vertical".

然后自定EditText:

public class MyEditText extends EditText {

    public MyEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyEditText(Context context) {
        super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent evt) {
        switch (evt.getAction()) {
        case MotionEvent.ACTION_MOVE:
        // 通知其父控件,现在进行的是本控件的操作,不允许拦截    
                  getParent().requestDisallowInterceptTouchEvent(true);
            break;
        }
        return super.onTouchEvent(evt);
    }
}

使用的时候只要把系统的EditText控件换成带完整包路径的MyEditText即可,例如:com.xxx.xxx.ui.view.edittext.MyEditText

大功告成,下班吃饭。

你可能感兴趣的:(android)