我使用的是Horizontal ViewPager2,它里面有4个片段。每个片段都有一个回收器视图上的SwipeReFresLayout。我面临的问题是,当回收器视图位于顶部时,然后onClick on任何项目列表都不起作用。如果我向下滚动一点回收器视图,那么onClick就可以正常工作。当回收器视图位于顶部时,如果SwipeReFresLayout处于刷新状态,那么onClick就可以正常工作。SwipeReFresLayout似乎与ViewPager2在触摸事件中存在冲突。它可以在简单的ViewPager中正常工作。实际问题可能是什么,我们如何处理它?任何想法都将是值得赞赏的。
谢啦
XML:
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/fragment_home"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<include
android:id="@+id/headerPanel"
layout="@layout/home_header"
app:viewModel="@{viewModel}" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:paddingStart="@dimen/home_post_side_spacing"
android:paddingEnd="@dimen/home_post_side_spacing"
app:colorScheme="@{@color/fayvo_color}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/headerPanel"
app:onRefreshListener="@{() -> viewModel.manualRefresh()}"
app:refreshing="@{viewModel.isRefreshing}"
android:background="#f0f0f0">
<RelativeLayout
android:id="@+id/rl_rv"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_homePosts"
adapter="@{viewModel.postObservableArrayList}"
addToTop="@{viewModel.addToTop}"
clearList="@{viewModel.clearList}"
showLoader="@{viewModel.isPagingEnabled && viewModel.isLoading}"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<FrameLayout
android:id="@+id/emptyFrameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="@{viewModel.showEmptyLayout?View.VISIBLE:View.GONE}" />
<include
android:id="@+id/postUploadProgressLayout"
layout="@layout/item_post_upload_progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:viewModel="@{viewModel}" />
</RelativeLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<View
android:id="@+id/tooltipView"
android:layout_width="1dp"
android:layout_height=".1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
一个更简单的解决方案是将ViewPager2的Direct父级从CosntraintLayout更改为其他一些布局,即LinearLayout,它会正常工作。
我也面临着同样的问题,这是由于嵌套滚动。经过大量搜索,我知道协调器布局应该用作父布局。还需要添加应用程序栏,之后它应该可以完美运行。它解决了问题。
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinateLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/fragmentAppBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
app:elevation="0dp" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvMemberList"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/holder_member_item" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
正如我所看到的,您还有应用程序栏,因此用户约束布局,并在其中包含您的应用程序栏和协调器布局,因此层次结构应该如下所示
ConstraintLayout
AppBar
CoordinatorLayout
有人在处理ViewPager2片段GoogleMap吗? 我遇到了一个非常有趣的问题,在我的viewpager中有两个选项卡,每个选项卡都呈现片段。 其中一个片段产生了谷歌地图。 当我尝试在地图上移动时,我得到了viewpager2尝试左右滑动的效果,这真的很烦人,所以我所做的解决方法并不太好。 我通过构造函数将视图寻呼机暴露给其中一个片段,并向顶部视图寻呼机活动发出回调。 在那里,我用逻辑执行了
我在SwipeRefreshLayout中使用了新的回收视图布局,遇到了一个奇怪的行为。当将列表滚动回顶部时,有时顶部的视图会被打断。 如果我现在尝试滚动到顶部,将触发拉刷新。 如果我尝试删除回收器视图周围的滑动刷新布局,问题就会消失。并且可以在任何手机上复制(不仅仅是L-Preview设备)。 这就是我的布局——行是由RecycleServiceAdapter(此列表中有2种视图类型)动态构建的
我使用pybind11让python调用现有的C模块(库)。但是,在C库中,调用::GetModuleFileName(Visual Studio)来确定加载的模块在C中运行时的物理路径。但是当我通过pybind11从python(Jupyter Notebook)调用库时,python.exe的物理路径会返回。如何配置或更改以确保获得C库的物理路径? C代码是这样的:Lib. h 我ib.cpp
有了这个Jaxb Xml定义,我尝试通过添加来移除映射元素包装器,但在解压缩过程中会导致异常 EventAdapter是 我的输出是 我尝试通过添加来删除标记 产量不错 但撤退失败了 调试Jaxb使我熟悉了这一行
我想使用Stetho调试了我的Andorid应用程序,但Stetho与Fastjson有冲突。
问题内容: 我实现了使用,并且需要在期间禁用适配器项。 我尝试了以下方法,但是单击通常会发生: 问题答案: 使用我们处理过的逻辑。这将禁用适配器项,而不是其父项。 实现应如下所示: 用法: