2012-02-09 55 views
1

我正在使用線索繪製從視圖擴展的所有對象和自定義對象的Livewallpaper。問題是,我的自定義視圖不會觸發點擊....Android - 自定義視圖上的OnClick不會觸發

這裏是代碼Snippeds:

在我WallpaperService類的OnTouch IST給我的繪畫主題:

@Override 
    public void onTouchEvent(MotionEvent event) { 
     super.onTouchEvent(event); 
     painting.doTouchEvent(event); 
    } 

然後在我PaintingThread的我要創建我的自定義視圖的實例構造函數:在我obj的構造

public LiveWallpaperPainting(SurfaceHolder surfaceHolder, Context context) { 
    for(int i = 0; i < numberOfObj;i++){ 
     obj.add(new Obj(context,objBitmap, objBitmap2, mCanvasWidth, mCanvasHeight, 32, 32 , 20, 10)); 
    } 

然後:

super(context); 
    this.context = context; 
    this.setEnabled(true); 
    this.setFocusable(true); 
    this.setFocusableInTouchMode(true); 
    this.setClickable(true); 
    this.setOnClickListener(this); 

該類實現OnClickListener。

但是當我登錄了的onClick沒有任何反應....:

@Override 
public void onClick(View v) { 
    Log.d(TAG, "clicked"); 
} 

我越來越瘋狂,因爲我試過這麼多,但是毫無效果... :(請幫我 。我認爲onClick函數逮住之前我的OBJ能反應 - 但不知道爲什麼....

我希望我給你所需要的所有細節...

由美

+0

看看這個解決方案:http://stackoverflow.com/a/17978891/779408 – breceivemail 2015-03-30 07:25:00

回答

4

的以下代碼作品。你有關於Activity的其他OnClickListener嗎?

public class CustomView extends View implements OnClickListener { 
Paint paint; 

public CustomView(Context context) { 
    this(context, null);   
} 

public CustomView(Context context, AttributeSet attrs) { 
    this(context, attrs, 0); 
} 

public CustomView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle);     
} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    paint = new Paint(); 
    paint.setColor(Color.BLUE); 

    canvas.drawRect(0.f, 0.f, 240.f, 240.f, paint); 

    this.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    Log.d("CustomView", "Click");  
}} 

main.xml中

<com.examples.view.CustomView 
android:id="@+id/button1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 
+0

其實這並沒有爲我工作,我不知道爲什麼...:...( 我沒有任何活動,因爲它的LiveWallpaper,並沒有正常的活動......所以這裏怎麼回事??? – user980175 2012-02-10 10:31:08

+2

更好地設置onClickListener()int構造函數 – Heigo 2014-05-04 10:29:37

+0

@Heigo - 設置onClickListener在構造函數中不會觸發任何事件,我想知道爲什麼onClick在onDraw中觸發事件,但不在構造函數中觸發事件。 – Alex 2016-06-27 18:39:31