如何点击Android中按钮后面的视图?

时间:2012-12-11 13:25:33

标签: android events touch

我想创建一个形状或按钮但是当它被点击时,它会将事件发送到它后面的视图。 我已经使用了onInterceptTouchEvent,但仍然是按钮而不是视图。 这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01" 
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" 
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:background="@drawable/background">

 <com.Example.MultitouchView
          android:id="@+id/touchView"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:background="#FF0000" />

 <Button
    android:id="@+id/btnDo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/bg1"
    android:text="Test"
    android:textSize="20sp"
    android:textColor="#110342" >
</Button>

</RelativeLayout>

MultitouchView.class

public class MultitouchView extends View {

private boolean isMultiTouch = false;
private static final int        SWIPE_MIN_LENGHT        = 100;
private static final long       MULTITOUCH_DELAY        = 500;
private long    mTouchStart;

public MultitouchView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public MultitouchView(Context context, AttributeSet attrs, int defStyle) {
          super(context, attrs, defStyle);

  }

  public MultitouchView(Context context, AttributeSet attrs) {
          super(context, attrs);

  }

  public boolean onInterceptTouchEvent(MotionEvent event){
    Toast toast = Toast.makeText(getContext(), "TEST", 1000);
    toast.show();

    return false;

  }

  @Override
  public boolean onTouchEvent(MotionEvent event) {
        super.onTouchEvent(event);
        int action = event.getAction() & MotionEvent.ACTION_MASK;
        switch (action) {
            case MotionEvent.ACTION_DOWN: {
                Log.d("MultitouchExample","Action Down");
                mTouchStart = System.currentTimeMillis();
                SoundManager.playSound(1,1);
                break;
            }
        }
        return true;
  }

}

由于

4 个答案:

答案 0 :(得分:0)

@Override 
    public boolean hasWindowFocus() {
            return isEnabled() && getVisibility() == VISIBLE ? true : false;
        }
在您的MultiTouchView类中

。 我希望这有效

答案 1 :(得分:0)

你应该在Button.onTouchEvent()

中扩展Button并返回false
new Button(dozActivity) {
@Override
public boolean onTouchEvent(MotionEvent event)
{
    return false;
}
};

或通知按钮后面的View的OnTouchListener:

答案 2 :(得分:0)

我已经解决了这个问题,在按钮中添加了这个:

机器人:可点击= “假”

感谢您的帮助

答案 3 :(得分:0)

您可以在按钮的大小和位置上创建一个Rectangle变量,并将其用作;

If(touch != null && rectangle.contains(touchPoint))
{
    // do action      
}  

如果在更新按钮之前更新此按钮,则矩形将成为新的隐形按钮。