gpt4 book ai didi

Android 如何在 Activity 中的任何地方滑动时调用 OnFling 而不仅仅是在 ViewFlipper 中

转载 作者:太空宇宙 更新时间:2023-11-03 12:11:55 26 4
gpt4 key购买 nike

在我的 viewFlipper 中,一些 TextView 是动态加载的。大小可能不同,这意味着在 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;
}
}
});

到目前为止,即使我得到 true,我也尝试返回 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);
}

关于Android 如何在 Activity 中的任何地方滑动时调用 OnFling 而不仅仅是在 ViewFlipper 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7609713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com