Android - OnClick в пользовательском представлении не запускается - PullRequest
1 голос
/ 09 февраля 2012

Я работаю над Livewallpaper с потоком, рисующим все объекты и пользовательские объекты, расширенные из View. Проблема в том, что мой пользовательский вид не срабатывает при клике ....

Ниже приведен код кода:

в моем классе обоев для рабочего стола OnTouch передается моей теме:

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

Затем в конструкторе моего PaintingThread я создаю экземпляры моего пользовательского представления:

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 может среагировать ?? Но не знаю почему ....

Я надеюсь, что дал вам все необходимые детали ...

Yumi

1 Ответ

4 голосов
/ 09 февраля 2012

Следующий код работает.У вас есть на 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...