说明
我有2个按钮,我的一个按钮重叠另一个按钮的一半。我的按钮有ireegular形状。由于其中一些在我的按钮有透明区域。该区域与其他按钮重叠。
我的问题
当我点击按钮的透明区域时,触摸应该在它下方的按钮上被触发。我无法将触摸转移到按钮下方。反之亦然
按照说明
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);
*/
}
}
}
答案 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);