*我是初学者的通常借口*
我在Android Studio中使用垂直滚动视图创建了一个活动,并添加了一些项目,包括Web视图。
这很好,我可以上下滚动并且网络视图正确显示。
我的问题是,只要我移动手指,Web视图中显示的对象就是一个地图(leaflet.js),它具有自己的水平和垂直滚动。
现在,当我将手指移动到Web视图水平上方或下方时,什么也不会发生,如果将它们移动到Web视图顶部,则地图会左右滚动,但是不幸的是,每当我垂直移动手指时,滚动视图就会上下移动Web视图保持在完全相同的垂直位置。
只要我的手指触摸地图,是否可以禁用滚动视图的垂直滚动?这是我无法使用的代码:
Bad receiver type 'CGFloat'(aka 'double')
添加此代码后,甚至无法进行水平滚动,但是也许您可以帮助我使其工作。
预先感谢:)
关于基督徒
答案 0 :(得分:2)
您可以按以下方式扩展ScrollView以禁用滚动
class LockableScrollView extends ScrollView {
// true if we can scroll (not locked)
// false if we cannot scroll (locked)
private boolean mScrollable = true;
public View.OnTouchListener unsuportedTouchListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
mScrollable = false;
}else if(event.getAction() == MotionEvent.ACTION_UP){
mScrollable = true;
}
return false;
}
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(ev.getAction() == MotionEvent.ACTION_DOWN){
// if we can scroll pass the event to the superclass
return mScrollable && super.onTouchEvent(ev);
}else{
return super.onTouchEvent(ev);
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// Don't do anything with intercepted touch events if
// we are not scrollable
return mScrollable && super.onInterceptTouchEvent(ev);
}
}
在您的XML文件中(只需将ScrollView更改为您的特殊LockableScrollView):
<com.your.package.LockableScrollView
android:id="@+id/QuranGalleryScrollView"
android:layout_height="match_parent"
android:layout_width="match_parent">
</com.mypackagename.LockableScrollView>
启用/禁用滚动视图:
LockableScrollView scv = (LockableScrollView)findViewById(R.id.QuranGalleryScrollView);
myWebView.setOnTouchListener(scv.unsuportedTouchListener);