其他分享
首页 > 其他分享> > Android如何在活动中的任何位置轻松调用OnFling,而不仅仅是在ViewFlipper中

Android如何在活动中的任何位置轻松调用OnFling,而不仅仅是在ViewFlipper中

作者:互联网

在我的viewFlipper中,一些TextViews是动态加载的.大小可能不同,这意味着在viewFlipper下可能会留下一些空间(请参见截图中的绿色部分)

screenshot

我希望不仅在灰色部分(即viewflipper)上滑动时调用onFling方法,而且还要在绿色部分上滑动时调用onFling方法

我的布局看起来像这样:

<?xml version="1.0" encoding="utf-8"?>

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/root">


<ViewFlipper android:id="@+id/viewFlipper"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content">       
</ViewFlipper>

 </RelativeLayout>

在我的onCreate中,我这样做:

this.viewFlipper = (ViewFlipper) this.findViewById(R.id.viewFlipper);

    this.gestureDetector = new GestureDetector(new MyGestureDetector());

    RelativeLayout root = (RelativeLayout) this.findViewById(R.id.root);
    root.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (gestureDetector.onTouchEvent(event)) {
                Log.d("root", "true");
                return false;
            } else {
                Log.d("root", "false");
                return false;
            }
        }
    });

到目前为止,即使我得到了真的,我也试图返回false,这样即使在viewflipper之外进行了滑动,事件也不会被消耗掉并传递给viewFlipper.

请注意,viewFlipper不需要任何显式的onTouchListener.它有或没有一个(我真的不明白为什么..)

有谁知道该怎么办?

解决方法:

尝试将android:clickable =“true”添加到RelativeLayout,你应该能够做到.

如果这不起作用,您可能还需要实现这两种方法(如果还没有完成):

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    //TouchEvent dispatcher.
    if (gestureDetector != null) {
        if (gestureDetector.onTouchEvent(ev))
            //If the gestureDetector handles the event, a swipe has been executed and no more needs to be done.
            return true;
    }
    return super.dispatchTouchEvent(ev);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
}

标签:viewflipper,android,android-activity,onfling
来源: https://codeday.me/bug/20190726/1541574.html