2016-06-07 80 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