Java Can';t在Listview android中拖动或缩放谷歌地图
我已经在Java Can';t在Listview android中拖动或缩放谷歌地图,java,android,listview,Java,Android,Listview,我已经在列表视图中添加了一个映射片段。它工作正常,但不能拖动或缩放 MainActivity.java mapviewheader=getActivity().GetLayoutFlater().inflate(R.layout.view\u标题,mListView,false); FrameLayout map\u container=(FrameLayout)mapviewheader.findViewById(R.id.map\u container); FragmentTransacti
列表视图中添加了一个映射片段。它工作正常,但不能拖动或缩放
MainActivity.java
mapviewheader=getActivity().GetLayoutFlater().inflate(R.layout.view\u标题,mListView,false);
FrameLayout map\u container=(FrameLayout)mapviewheader.findViewById(R.id.map\u container);
FragmentTransaction mTransaction=this.getChildFragmentManager().beginTransaction();
mapFragment=new SupportMapFragment().newInstance();
//mapFragment.setOnTouchListener
添加(map_container.getId(),mapFragment);
mTransaction.commit();
试一试{
初始化(getActivity());
}捕获(例外e){
e、 printStackTrace();
}
mListView.setParallaxView(mapviewheader);
查看标题.xml
我曾尝试使用onTouchListener(…)
,但它对我不起作用。这是因为ListView已经捕捉到了触摸事件。你必须让你的地图碎片捕捉它们。为此,您可以扩展正在使用的MapSupportFragment
公共类TouchableGoogleMapFragment扩展了SupportMapFragment{
私家侦探;
@凌驾
创建视图上的公共视图(LayoutFlater LayoutFlater、ViewGroup ViewGroup、Bundle savedInstance){
视图布局=super.onCreateView(LayoutFlater、viewGroup、savedInstance);
TouchableWrapper frameLayout=新的TouchableWrapper(getActivity());
//让它隐形
setBackgroundColor(getResources().getColor(android.R.color.transparent));
((视图组)布局)。添加视图(框架布局,
新建ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.MATCH_父级);
返回布局;
}
公共void setListener(OnTouchListener侦听器){
mListener=监听器;
}
公共接口侦听器{
公开摘要无效onTouch();
}
公共类TouchableWrapper扩展了FrameLayout{
公共TouchableWrapper(上下文){
超级(上下文);
}
@凌驾
公共布尔dispatchTouchEvent(MotionEvent){
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
mListener.onTouch();
打破
case MotionEvent.ACTION\u UP:
mListener.onTouch();
打破
}
返回super.dispatchTouchEvent(事件);
}
}
}
然后,在您的main活动中
当用户触摸片段时,您必须requestDisallowWinterCeptTouchEvent(true)
:
//拦截触摸事件
setListener(新的TouchableGoogleMapFragment.OnTouchListener(){
@凌驾
公开无效onTouch(){
mScrollView.requestDisallowWinterCeptTouchEvent(true);
}
});
我在一个片段中使用了它,当我编写mapFragment.SetListener时出现了错误,但是您使用的是新的片段对象吗?而不是mapFragment=new SupportMapFragment().newInstance()
您正在使用mapFragment=new TouchableGoogleMapFragment()代码>