nilkash
nilkash

Reputation: 7546

Click listener for drawable inside custome framelaout class android

hi I am developing android application in which i am using one custom frame layout class. Inside that class I am using one drawable and with the help of canvas i m drawing that. I did this in following way :

public class BackgroundContainer extends FrameLayout implements OnTouchListener{

    Drawable mShadowedBackground;

    public BackgroundContainer(Context context) {
    super(context);
    init();
    }

    public BackgroundContainer(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
    }

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

    private void init() {
    mShadowedBackground =
            getContext().getResources().getDrawable(R.drawable.actionbar);

    }

    @Override  
    public boolean onTouchEvent(MotionEvent event)  
    {  
        Log.i("OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOO");
       switch(event.getAction())  
       {  

        case MotionEvent.ACTION_DOWN: {  

            invalidate();  
        }  
       }  
       return true;  
    }  

    @Override
    protected void onDraw(Canvas canvas) {

        mShadowedBackground.setBounds(getWidth()-150, 0, getWidth(), mOpenAreaHeight);
        canvas.save();
        canvas.translate(0, mOpenAreaTop);
        mShadowedBackground.draw(canvas);
        canvas.restore();
    }
    }

}  

Now I am want to listen click even on my drawable. I implement ontouch event but its not working. Am i doing it in wrong way. Need help thank you.

Upvotes: 0

Views: 439

Answers (2)

Deepak Senapati
Deepak Senapati

Reputation: 1123

Drawables are not clickable as it is not considered as a view.

Upvotes: 1

André Diermann
André Diermann

Reputation: 2783

Like deepak already said: by implementing the corresponding listener you just provide the behavior what should happen for a specific event. You still need to add the listener :) In your case this would help (in your init()):

setOnTouchListener(this);

Upvotes: 0

Related Questions