我想创建一个形状或按钮但是当它被点击时,它会将事件发送到它后面的视图。 我已经使用了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;
}
}
由于
答案 0 :(得分:0)
@Override
public boolean hasWindowFocus() {
return isEnabled() && getVisibility() == VISIBLE ? true : false;
}
在您的MultiTouchView类中。 我希望这有效
答案 1 :(得分:0)
你应该在Button.onTouchEvent()
中扩展Button并返回falsenew 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
}
如果在更新按钮之前更新此按钮,则矩形将成为新的隐形按钮。