frameLaout 的 TouchListener
TouchListener for frameLaout
我有一个包含几个视图的 FrameLayout。我想将 TouchListener 设置为 frameLayout,布局在代码中创建:
FrameLayout textLayout = new FrameLayout(getActivity());
textLayout.setOnTouchListener(this);
FrameLayout.LayoutParams textLayoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
textLayout.setLayoutParams(textLayoutParams);
container.addView(textLayout);
我给它分配了一个 touchListener 但它没有输入。
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("tag","touch");
return true;
}
更新:
我想我发现了部分问题:我将 frameLayout 的背景设置为绿色并扩展了 framelayout 的 space ,这样它就不会只覆盖它的视图,而是覆盖更多一点。所以我看到了我的观点和他们旁边的绿色。当我触摸绿色时,onTouch 事件会激活,但当我触摸视图时不会。
您似乎正在使用您的片段作为侦听器。请确保它实现并覆盖,即
public final MyFragment implements View.OnTouchListener {
....
}
然后确保您没有在 activity 或您 return true
中的其他 fragment/view 中使用触摸侦听器,即触摸事件被消耗并且不会'不会被派遣。
注意为了即使frame布局容器中有view也能正常派发事件,可以设置为不可点击,即
<FrameLayout
android:id="@+id/frameLayout"
android:clickable="true"
...>
<TextView android:id="@+id/text" android:clickable="false" .../>
<... android:clickable="false" .../>
</FrameLayout>
如果需要,您也可以在代码中禁用所有视图作为可点击对象:
text.setClickable(false);
我有一个包含几个视图的 FrameLayout。我想将 TouchListener 设置为 frameLayout,布局在代码中创建:
FrameLayout textLayout = new FrameLayout(getActivity());
textLayout.setOnTouchListener(this);
FrameLayout.LayoutParams textLayoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
textLayout.setLayoutParams(textLayoutParams);
container.addView(textLayout);
我给它分配了一个 touchListener 但它没有输入。
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("tag","touch");
return true;
}
更新:
我想我发现了部分问题:我将 frameLayout 的背景设置为绿色并扩展了 framelayout 的 space ,这样它就不会只覆盖它的视图,而是覆盖更多一点。所以我看到了我的观点和他们旁边的绿色。当我触摸绿色时,onTouch 事件会激活,但当我触摸视图时不会。
您似乎正在使用您的片段作为侦听器。请确保它实现并覆盖,即
public final MyFragment implements View.OnTouchListener {
....
}
然后确保您没有在 activity 或您 return true
中的其他 fragment/view 中使用触摸侦听器,即触摸事件被消耗并且不会'不会被派遣。
注意为了即使frame布局容器中有view也能正常派发事件,可以设置为不可点击,即
<FrameLayout
android:id="@+id/frameLayout"
android:clickable="true"
...>
<TextView android:id="@+id/text" android:clickable="false" .../>
<... android:clickable="false" .../>
</FrameLayout>
如果需要,您也可以在代码中禁用所有视图作为可点击对象:
text.setClickable(false);