我有一个具有线性布局和一些子视图的活动。如果我在子视图外用一根手指触摸,则用另一根手指触摸子视图,在子视图上不会触发触摸事件。如果我直接触摸子视图,我会收到一个事件。
我覆盖了活动中的触摸事件并调用了子视图,这是有效的,但X,Y来自父级,而不是相对于子级。孩子如何看待framelayout,无论外面的其他手指触摸如何都能获得所有触摸事件?
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event != null && clock != null) {
event.offsetLocation(-frameLayout1.getLeft(),- frameLayout1.getTop());
clock.onTouchEvent(event);
}
return false;
};
布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/LearningLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_gravity="center_horizontal">
</FrameLayout>
<TextView
android:id="@+id/targetTime"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:gravity="center_horizontal"
android:text="TextView" android:textSize="64dp" android:layout_gravity="center_horizontal"/>
<TextView
android:id="@+id/textualTime"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:gravity="center_horizontal"
android:text="TextView" android:textSize="64dp" android:layout_gravity="center_horizontal"/>
<TextView
android:id="@+id/textualTime2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:gravity="center_horizontal"
android:text="TextView" android:textSize="64dp" android:layout_gravity="center_horizontal"/>
</LinearLayout>
<com.google.ads.AdView android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="a14e531e444c51a"
ads:adSize="SMART_BANNER" android:layout_marginTop="5dp" android:layout_alignParentBottom="true"/>
</RelativeLayout>
答案 0 :(得分:0)
基本上,clock.getLeft()和clock.getTop()返回0。时钟是framelayout内部的视图子类。如果我使用framelayout getLeft()和getTop()它返回正确的偏移量并且有效。 有没有比调用childview触摸事件和抵消更好的方法?