按钮中的透明区域和触摸按钮下方的按钮

时间:2014-05-22 06:04:12

标签: android button touch overlay

说明

我有2个按钮,我的一个按钮重叠另一个按钮的一半。我的按钮有ireegular形状。由于其中一些在我的按钮有透明区域。该区域与其他按钮重叠。

我的问题

当我点击按钮的透明区域时,触摸应该在它下方的按钮上被触发。我无法将触摸转移到按钮下方。反之亦然

按照说明

enter image description here enter image description here

explaintion:

黑色矩形是按钮,浅绿色矩形也是按钮 浅绿色矩形按钮的透明区域重叠黑色。

我的成就 我触发了触摸区域是按钮的透明区域或彩色

    Bitmap TheBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.menu);
    int eventPadTouch2 = event.getAction();
    int iXi = (int) event.getX();
    int iYi = (int) event.getY();
    switch (eventPadTouch2) {
    case MotionEvent.ACTION_DOWN:
        if (iXi>=0 & iYi>=0 & iXi<TheBitmap.getWidth() & iYi<TheBitmap.getHeight()) {                 
            if (TheBitmap.getPixel(iXi,iYi)!=0) {

                Toast.makeText(Mainact2.this, "menu",Toast.LENGTH_LONG).show();
                return true; 
            } 
            else {
                      // do work if transparent area

view2.bringToFront();

/*view2.requestFocus();
                        view2.requestFocusFromTouch();
                        view2.onTouchEvent(event);
*/


            }
        }
    } 

3 个答案:

答案 0 :(得分:0)

如果您可以检测到触摸位于透明部分,则从OnTouchListener返回false。这应该将触摸事件传递到该区域的下一个视图。

答案 1 :(得分:0)

当您检测到已触摸透明区域时(应该触发下面的按钮触摸),然后只需调用其触摸/点击处理程序。

简化代码:

void btn1OnTouch()
{
    if (!transparent)
    {
        btn1Handler();
    }
    else
    {
        btn2Handler();
    }
}

void btn2OnTouch()
{
    btn2Handler();
}

void btn1Handler()
{
    //real job is done here
}

void btn2Handler()
{
    //real job is done here
}

你试过这种方式吗?

答案 2 :(得分:0)

您可以使用此代码

 getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                    | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                    | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);