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