Android 安卓:OnTouchListener不';行不通

Android 安卓:OnTouchListener不';行不通,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,在我的应用程序中,我有一个片段,里面有谷歌地图。当用户向右滑动该片段时,我想将其从活动中删除。以下是我的片段代码: public class MapFragment extends Fragment { public GoogleMap map = null; public static MapFragment newInstance() { MapFragment mapFragment = new MapFragment(); return mapFragment; }

在我的应用程序中,我有一个片段,里面有谷歌地图。当用户向右滑动该片段时,我想将其从活动中删除。以下是我的片段代码:

public class MapFragment extends Fragment {

public GoogleMap map = null;

public static MapFragment newInstance() {
    MapFragment mapFragment = new MapFragment();
    return mapFragment;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    final View view = inflater.inflate(R.layout.fragment_map, container, false);

    map = ((SupportMapFragment) getChildFragmentManager()
            .findFragmentById( R.id.view_map )).getMap();

    map.setOnMapClickListener(null);
    map.getUiSettings().setScrollGesturesEnabled(false);

    view.setOnTouchListener(new OnSwipeListener(getActivity()) {
        @Override
        public void onSwipeRight() {
    TranslateAnimation animation = new TranslateAnimation(0, +view.getWidth(), 0, 0);
            animation.setDuration(500);
            view.startAnimation(animation);
            view.setVisibility(View.GONE);
        }

        @Override
        public void onSwipeLeft() {
    // do nothing   
        }
    });

    return view;
} 
}
以下是我的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="200dip"
android:background="@color/header_black"
android:gravity="center"
android:orientation="horizontal"
android:paddingBottom="5dip">

<fragment
    android:id="@+id/view_map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="200dip" />

目前,如果我在碎片上向右滑动,它不会做任何事情。有人能告诉我我做错了什么吗?

您的“OnSwipeListener”代码中有什么

看看安卓系统中的应用程序。它支持投掷动作,我认为这和你的滑动动作是一样的

尝试以下操作以获取视图大小:

@Override
 protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
     super.onSizeChanged(xNew, yNew, xOld, yOld);

     viewWidth = xNew;
     viewHeight = yNew;
}
“OnSwipeListener”代码中有什么

看看安卓系统中的应用程序。它支持投掷动作,我认为这和你的滑动动作是一样的

尝试以下操作以获取视图大小:

@Override
 protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
     super.onSizeChanged(xNew, yNew, xOld, yOld);

     viewWidth = xNew;
     viewHeight = yNew;
}

这是OnSwipeListener的代码,我怀疑您在设置之前获得了视图大小,换句话说,我怀疑它是0。我得到的视图大小不同,我将编辑我的答案。不,我得到的是正确的视图大小。如果我使用相同的代码而没有映射。它很好用。我认为map是如何吸收侦听器的。这是OnSwipeListener的代码,我怀疑您在设置它之前获得了视图大小,换句话说,我怀疑它是0。我得到的视图大小不同,我将编辑我的答案。不,我得到的是正确的视图大小。如果我使用相同的代码而没有映射。它很好用。我认为map是如何吸引听众的。