Android 编辑文本滚动完成后开始外部滚动

Android 编辑文本滚动完成后开始外部滚动,android,android-edittext,scrollview,Android,Android Edittext,Scrollview,我试过stackoverflow上的每一个简单例子,但没有什么能解决我的问题。这是我的问题 我在活动中有滚动视图,在滚动视图中有滚动条=“垂直”选项编辑文本 我想在内部编辑文本滚动完成后,在滚动视图的滚动框外滚动,就像在编辑文本滚动框的顶部或编辑文本滚动框的底部一样 我原以为可以用视图捕捉功能来实现,但没有任何效果。试试下面的示例代码,希望它对您有用 在XML中 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:a

我试过stackoverflow上的每一个简单例子,但没有什么能解决我的问题。这是我的问题

我在
活动中有
滚动视图
,在
滚动视图
中有
滚动条=“垂直”
选项
编辑文本

我想在内部
编辑文本
滚动完成后,在
滚动视图
的滚动框外滚动,就像在
编辑文本
滚动框的顶部或
编辑文本
滚动框的底部一样


我原以为可以用视图捕捉功能来实现,但没有任何效果。

试试下面的示例代码,希望它对您有用

在XML中

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#aa8822"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#aa8822"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/edt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/white"
            android:ems="10"
            android:maxLines="3"
            android:scrollbars="vertical"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:textStyle="bold" >

            <requestFocus />
        </EditText>  
    </LinearLayout>

</ScrollView>

你能详细说明一下吗。您想在scrollview中放置可滚动编辑文本吗?很抱歉,我的解释不够。我的意思是我有活动,在活动中我有一个滚动视图。然后在滚动视图中,我有一个可以滚动的编辑文本(固定大小的视图,但内容可以无限)。那么现在是我的问题。我点击edittext,在里面放了很多文本,然后edittext滚动运行。当我在edittext内完成文本输入后,我将edittext内容滚动到顶部。但在这个滚动后,我想直接滚动与外部滚动视图的滚动。(这意味着edittext有焦点可滚动,我想将焦点和可滚动移动到外部滚动视图)我想如果我知道edittext滚动完成的时间。然后我想我可以通过dispatchTouchEvent将scroll事件和焦点移动到scrollview,就像这样,而不必触摸您希望scrollview滚动的编辑文本。是的,不完全相同,但在我的应用程序中,edittext大小太大,因此没有足够的视图向外滚动,所以我认为用户只能滚动编辑文本,但当它有焦点时,软键盘不会关闭,也无法滚动到外部,只能使用硬件后退按钮。
EditText edt = (EditText) findViewById(R.id.edt);

        edt.setOnTouchListener(new OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        if (v.getId() == R.id.edt) {
                            v.getParent().requestDisallowInterceptTouchEvent(true);
                            switch (event.getAction() & MotionEvent.ACTION_MASK) {
                            case MotionEvent.ACTION_UP:
                                v.getParent().requestDisallowInterceptTouchEvent(false);
                                break;
                            }
                        }
                        return false;
                    }
                });