Android 以WebView作为标题的ListView自动滚动
我遇到了这种情况,我创建了一个Android 以WebView作为标题的ListView自动滚动,android,android-listview,android-webview,Android,Android Listview,Android Webview,我遇到了这种情况,我创建了一个ListFragment,在其中附加了一个HeaderView,其中包含一个长WebView。 从这里开始,我详细解释了这种情况,每当用户试图长时间点击WebView内容时,为了:让我们说从中复制一个短语并粘贴到其他地方,它会自动滚动到HeaderView的底部 我创建了一个简单的例子(这里),在这个例子中我证明了我的行为,这样我就可以更容易地被理解。它的布局只是简单的布局,没有什么与众不同的。(一个框架布局用于活动和一个网络视图用于列表片段头视图) 正如我在上面的
ListFragment
,在其中附加了一个HeaderView
,其中包含一个长WebView
。
从这里开始,我详细解释了这种情况,每当用户试图长时间点击WebView
内容时,为了:让我们说从中复制一个短语并粘贴到其他地方,它会自动滚动到HeaderView的底部
我创建了一个简单的例子(这里),在这个例子中我证明了我的行为,这样我就可以更容易地被理解。它的布局只是简单的布局,没有什么与众不同的。(一个框架布局
用于活动
和一个网络视图
用于列表片段头视图
)
正如我在上面的线程中提到的,可以通过删除
requestWindowFeature(Window.FEATURE_NO_TITLE);
行,一切正常,但我需要我的活动隐藏操作栏/标题栏,使其符合设计。我尝试将ActionBarActivity
与getSupportActionBar().hide()
一起使用,但结果相同
我该怎么做才能将其转化为期望的结果
LE:我有一种感觉,不知何故,我可以访问默认的行为,即在WebView上单击onLongClick,在调用默认方法后,我可以返回true,这样事件就不会被进一步调度(也称为ListView)。我搜索了所有地方,但我找不到这段代码,无法在onLongClick上触发默认行为(我想是带有选择和复制/粘贴的startActionMode)
LE2:布局如下:
MainActivity布局包含具有匹配父级高度/宽度的FrameLayout。
HeaderView是一种包含匹配父级高度/宽度WebView的布局
这是headerview布局:
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/wv_test"
android:layout_width="match_parent"
android:layout_height="match_parent" />
我认为主要的问题是,您将一个可滚动视图(webview)作为另一个可滚动视图(listview)的一部分。您应该尝试创建一个自定义webview,并通过以下方式覆盖onTouchEvent方法:
@Override
public boolean onTouchEvent(MotionEvent event) {
requestDisallowInterceptTouchEvent(true);
return super.onTouchEvent(event);
}
这将禁用webview(listview)的父级以拦截触摸事件您的R.layout.act_main在哪里?如果你想有人帮你。您应该提供所有信息:)MainActivity布局仅具有匹配的父级宽度/高度FrameLayout。没有什么不寻常的事。我也用这些信息重新编辑了帖子。我复制粘贴了你的要点,但没有找到“R.id.container_list”((WebView)header.findviewbyd(R.id.wv_test))、R.layout.frag_header和其他等等many@AZ_我也改变了headerView的布局。R.id.container\u list是我添加了ListFragments的FrameLayout的id您的答案可能在我想象的正确路径上,但它需要更多的工作。我这么说的原因是,现在listview根本不会滚动(可能是因为我的CustomWebView正在“窃取”该事件),所以我需要做的是,仅当我长按WebView时,才会发生此requestDissallowInterceptTouchEvent。你能帮我解决这个问题吗?你能做的最好的事情就是设置RequestDisallowWinterCeptTouchEvent(true);当你点击webview时,点击listview时,点击false,唯一的问题是每次你想要改变截距时,你都需要点击屏幕。否则,如果您不需要标题与列表一起滚动,您可以将它们分开。