解決google在scroll裡左右拖動的問題
来源:互联网 发布:sql数组 编辑:程序博客网 时间:2024/05/18 01:05
在scroll裡使用google map後,發現地圖的拖拉事件有衝突問題,google一下,發現了以下解決方法
从技术上讲,将地图视图滚动型布局容器内可以使地图变得难以滚动。
这是因为滚动布局容器将拦截到触摸事件,以便在地图上就失去了触摸事件,使得难以滚动或平移。
无论是在Android地图V2或以前的版本都會发生这种情况。
在这种情况下,解决方法是创建一个自定义SupportMapFragment类,因此我们可以覆盖其触摸事件。
public class WorkaroundMapFragment extends SupportMapFragment { private OnTouchListener mListener; @Override public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle savedInstance) { View layout = super.onCreateView(layoutInflater, viewGroup, savedInstance); TouchableWrapper frameLayout = new TouchableWrapper(getActivity()); frameLayout.setBackgroundColor(getResources().getColor(android.R.color.transparent)); ((ViewGroup) layout).addView(frameLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return layout; } public void setListener(OnTouchListener listener) { mListener = listener; } public interface OnTouchListener { public abstract void onTouch(); } public class TouchableWrapper extends FrameLayout { public TouchableWrapper(Context context) { super(context); } @Override public boolean dispatchTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mListener.onTouch(); break; case MotionEvent.ACTION_UP: mListener.onTouch(); break; } return super.dispatchTouchEvent(event); } }}
在这个类中,我们通过使用扩展的FrameLayout TouchableWrapper类拦截触摸事件。还有一个自定义侦听OnTouchListener调度触摸事件来处理该地图主activityMyMapActivity。当触摸事件发生,dispatchTouchEvent将被调用,听者mListener将会处理它。
xml
<?xml version="1.0" encoding="UTF-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/sv_container" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- other child views //--> <fragment android:tag="fragment_map" android:id="@+id/fragment_map" android:layout_width="match_parent" android:layout_height="175dp" android:layout_marginTop="@dimen/activity_horizontal_margin" class="net.londatiga.android.ui.fragment.WorkaroundMapFragment"/></ScrollView>
使用
public class MyMapActivty extends MapActivity { private ScrollView mScrollView; private GoogleMap mMap; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_my_map); mMap = ((WorkaroundMapFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_map)).getMap(); mScrollView = (ScrollView) findViewById(R.id.sv_container); ((WorkaroundMapFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_map)).setListener(new WorkaroundMapFragment.OnTouchListener() { @Override public void onTouch() { mScrollView.requestDisallowInterceptTouchEvent(true); } }); }}
0 0
- 解決google在scroll裡左右拖動的問題
- 小程序scroll-view上下滑的内部加左右滑,scroll-x生效的情况
- 在scroll下面固定Button的方法
- scroll事件在微信安卓端的研究
- 饿了么项目---8、关于iscoll的扩展 better scroll的使用----左右菜单联动(2)
- Android里scroll嵌套google map
- Scroll bar 的使用
- Scroll Panes的使用
- jQuery的scroll()事件
- Window的对象Scroll
- 自定义scroll的实现
- android 布局中某一个View 在scroll滑动的时候吸附在顶部
- scroll
- scroll
- Scroll
- scroll
- scroll
- Scroll
- 给Repeater控件里添加序号的5种方法
- long型时间转化成月份和时间
- 把多個文件壓縮成zip文件然後實現下載
- 加快XCode的编译链接速度(200%+)—XCode编译速度慢的解决方案
- MeasureSpec学习 - 转
- 解決google在scroll裡左右拖動的問題
- 读取自定义模型文件,绘制模型
- 黑马程序员---Java 反射 数组 基础知识点
- PHP获取POST数据的三种方法
- 如何显示html代码到新窗口界面中
- [SCM]ASPx.net开发供应链系统,用来给供应商查询或做一些单据之类的
- C++网络编程概述(精)
- vim大小写转换 以及区块选择 复制粘贴
- Spring学习笔记——关于Spring注解扫描不能注入new对象问题