2015-02-10 23 views
0

我創建了一個類MapView,它繪製了一些表示地圖的圓圈和線條,您可以觸摸一個圓圈以更改其顏色。如果按照它應該的方式工作,但是當我將視圖添加到佈局時,touchlistener不會返回任何接觸。當視圖位於佈局中時,onTouchEvent不起作用

這裏是我的MainActivity.java

import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.*; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.RelativeLayout; 

public class MainActivity extends Activity { 

MapView mapView; 
RelativeLayout mainLayout; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mainLayout = new RelativeLayout(this); 
    mapView = new MapView(this); 
    mapView.findViewById(R.id.theMap2); 
    mapView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_UP) { 
       float x = event.getX(); 
       float y = event.getY(); 
       System.out.println("Touch! X: " + x + ", Y: " + y); 
       mapView.touched(x, y); 
       return true; 
      } 
      return true; 
     } 
    }); 

    setContentView(R.layout.activity_main2); 
} 

我可以看到的MapView的工作原理是這樣:setContentView(mapView);

這裏是activity_main2.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <bus.com.ece602_bus.MapView 
     android:id="@+id/theMap2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

我在做什麼錯?爲什麼沒有註冊觸摸?

+0

你爲什麼試圖找到視圖('mapView.findViewById(R.id.theMap2);')但不使用它? – maysi 2015-02-10 19:03:28

回答

0

setContentView(R.layout.activity_main2);創建一個新的佈局,其中新的實例爲MapView,而不是您設置偵聽器的實例。

+0

謝謝!沒有意識到它的工作原理,移動了setContentView,現在它的工作原理! – user1201473 2015-02-10 19:32:53

相關問題