2016-06-07 56 views
4

我面临着在Google地图上拖动布局的问题。当我试图拖动布局时,它就消失了。在google上拖动RelativeLayout触摸地图

我使用这个代码: -

imggg.setOnTouchListener(new View.OnTouchListener() { 
     int prevX,prevY; 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      final RelativeLayout.LayoutParams par=(RelativeLayout.LayoutParams)v.getLayoutParams(); 
      switch(event.getAction()) 
      { 
       case MotionEvent.ACTION_MOVE: 
       { 
        par.topMargin+=(int)event.getRawY()-prevY; 
        prevY=(int)event.getRawY(); 
        par.leftMargin+=(int)event.getRawX()-prevX; 
        prevX=(int)event.getRawX(); 
        v.setLayoutParams(par); 
        return true; 
       } 
       case MotionEvent.ACTION_UP: 
       { 
        par.topMargin+=(int)event.getRawY()-prevY; 
        par.leftMargin+=(int)event.getRawX()-prevX; 
        v.setLayoutParams(par); 
        return true; 
       } 
       case MotionEvent.ACTION_DOWN: 
       { 
        prevX=(int)event.getRawX(); 
        prevY=(int)event.getRawY(); 
        par.bottomMargin=-2*v.getHeight(); 
        par.rightMargin=-2*v.getWidth(); 
        v.setLayoutParams(par); 
        return true; 
       } 
      } 
      return false; 

     } 
    }); 

这里,imggg是相对布局的对象,这是谷歌地图上叠加。现在我想拖动这个布局,就像我们将标记从一个位置拖到另一个位置一样。

请帮我介绍一下。提前致谢。

+0

加入框架布局谷歌地图,然后尝试 – Pavya

+0

你的意思,在FrameLayout下添加地图? –

回答

1

您可以使用此代码来拖动RelativeLayout

RelativeLayout draggable = (RelativeLayout) findViewById(R.id.draggable); 
draggable.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(final View view, final MotionEvent motionEvent) { 
     RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams(); 

     switch (motionEvent.getAction()) { 
      case MotionEvent.ACTION_MOVE: { 
       params.topMargin = (int) motionEvent.getRawY() - (view.getHeight()/2); 
       params.leftMargin = (int) motionEvent.getRawX() - (view.getWidth()/2); 
       view.setLayoutParams(params); 
       return true; 
      } 
      case MotionEvent.ACTION_UP: { 
       return true; 
      } 
      case MotionEvent.ACTION_DOWN: { 
       return true; 
      } 
     } 

     return false; 
    } 
}); 

这是布局,这样的例子是完整的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 

    <fragment 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".MapsActivity"/> 

    <RelativeLayout 
     android:id="@+id/draggable" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:background="#FF0000" 
     android:clickable="true"/> 

</RelativeLayout> 
+0

此解决方案对您有帮助吗? – antonio