0

您好我正在开发 android 应用程序,我在其中使用一个自定义框架布局类。在该类中,我使用了一个可绘制对象,并在画布的帮助下进行了绘制。我通过以下方式做到了这一点:

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();
    }
    }

}  

现在我想在我的drawable上听点击。我实现了 ontouch 事件,但它不起作用。我是否以错误的方式做这件事。需要帮助谢谢。

4

2 回答 2

1

Drawables 不可点击,因为它不被视为视图。

于 2013-07-10T11:12:43.797 回答
0

就像 deepak 已经说过的:通过实现相应的侦听器,您只需提供特定事件应该发生的行为。您仍然需要添加侦听器:) 在您的情况下,这会有所帮助(在您的 init() 中):

setOnTouchListener(this);
于 2013-07-10T11:20:21.163 回答