一个片段有两个视图,一个FrameLayout包含一些子视图,在FrameLayout下面有一个viewPager。 我希望在FrameLayout上有像ACTION_MOVE这样的动作时替换片段,所以我在FrameLayout上添加一个onTouchListener但是它从不起作用,viewPager工作得很好,而且FrameLayout的子视图也有onClick事件
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.hall_gift, container,
false);
frameLayout = (FrameLayout)view.findViewById(R.id.fans_body_title);
frameLayout.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
Log.i(TAG,"ACTION DOWN");
}
return false;
}
});
return view;
}
答案 0 :(得分:1)
如果你给
android:clickable="true"
到你的framelayout 它不允许触摸您的viewpager
答案 1 :(得分:0)
您可以扩展FrameLayout并覆盖其onInterceptTouchEvent()以拦截子视图中的触摸事件。然后,使用自定义的FrameLayout而不是之前的FrameLayout。
Plz参考这个文件: http://developer.android.com/training/gestures/viewgroup.html#intercept
以下是代码段:
public class MyFrameLayout extends FrameLayout {
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
/*
* This method determines whether we want to intercept the motion.
* If we return true, onTouchEvent will be called.
*/
final int action = MotionEventCompat.getActionMasked(ev);
switch (action) {
case MotionEvent.ACTION_MOVE: {
if(meet your condition){
return true;
}
}
}
return false;
}
}