gpt4 book ai didi

java - 自定义 CoordinatorLayout 行为在第一个事件后丢失触摸输入流

转载 作者:行者123 更新时间:2023-11-30 08:49:42 26 4
gpt4 key购买 nike

我正在尝试编写一个需要拦截触摸事件的自定义 Behaviordocumentation说我应该从 onInterceptTouchEvent() 返回 true 以接管事件流,然后从 onTouchEvent() 返回 true 只要我想继续接收事件。当我这样做时,只收到 ACTION_DOWNACTION_CANCEL 事件。

以下是我如何连接所有内容:

//==============================================================================
public class CustomBehavior extends CoordinatorLayout.Behavior<View> {
//--------------------------------------------------------------------------

public CustomBehavior( Context context, AttributeSet attrs ) {
super( context, attrs );
Log.d( "AppTag", "SlidingCardBehavior" );
}

//--------------------------------------------------------------------------

@Override public boolean onInterceptTouchEvent( CoordinatorLayout coordinator, View child, MotionEvent event ) {

Log.d( "AppTag", "onInterceptTouchEvent() "
+ MotionEvent.actionToString( event.getAction() ));

return true;
}

//--------------------------------------------------------------------------

@Override public boolean onTouchEvent( CoordinatorLayout coordinator, View child, MotionEvent event ) {

Log.d( "AppTag", "onTouchEvent() "
+ MotionEvent.actionToString( event.getAction() ));

return true;
}

//--------------------------------------------------------------------------
}
//------------------------------------------------------------------------------

布局 xml:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context=".HomeActivity">

<FrameLayout android:id="@+id/back"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<android.support.v7.widget.CardView
android:id="@+id/front"
android:layout_width="match_parent"
android:layout_height="match_parent"

app:layout_behavior="tv.shuriken.android.behavior.CustomBehavior" />

</android.support.design.widget.CoordinatorLayout>

当我对此进行测试时,ACTION_DOWN 会按预期收到,但没有 ACTION_MOVEACTION_UP 事件。当我再次触摸时,我立即收到一个 ACTION_CANCEL,然后是另一个 ACTION_DOWN

文档让它听起来很简单,我确信我错过了一些东西。如何在 onTouchEvent() 中获取连续的事件流?

最佳答案

尝试将 clickable="true"添加到 xml 中的自定义 View 。也不要拦截第一个 ACTION_DOWN,拦截 ACTION_MOVE。

关于java - 自定义 CoordinatorLayout 行为在第一个事件后丢失触摸输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31324942/

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