【发布时间】:2017-02-10 12:31:11
【问题描述】:
我在具有 BottomSheetBehavior 的 LinearLayout 中有两个 RecyclerView。当您单击第一个 RecyclerView(带有网格)内的项目时,RecyclerView 设置为 Gone,并显示第二个 RecyclerView(带有列表)。当显示第二个 Recycler 时,您不能上下滑动 BottomSheet,而是列表即使在展开状态下也会滚动。如果 First Recycler 启动,一切都很好。有没有办法让 BottomSheet 再次上下滑动?
<LinearLayout
android:id="@+id/sliding_layout_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical"
app:behavior_hideable="false"
app:behavior_peekHeight="400dp"
app:layout_behavior="@string/bottomSheetBehavior">
<android.support.v7.widget.RecyclerView
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginEnd="@dimen/activity_horizontal_margin"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:background="@color/white"
android:clickable="true"
android:scrollbars="none" />
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginEnd="@dimen/activity_horizontal_margin"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:background="@color/white"
android:clickable="true"
android:scrollbars="none" />
</LinearLayout>
网格适配器:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String categorieName = mCategories.get(position);
final CategoryFilterEvent event = new CategoryFilterEvent(categorieName);
holder.grid_item_label.setText(categorieName);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post(event);
}
});
}
主活动:
@Override
public void onCreate(Bundle savedInstanceState) {
linearLayoutManager = new LinearLayoutManager(this);
listAdapter = new ListAdapter(this, mList);
recyList.setAdapter(listAdapter);
recyList.setLayoutManager(linearLayoutManager);
gridLayoutManager = new GridLayoutManager(this, 3);
gridAdapter = new GridAdapter(this, new ArrayList<String>());
recyGrid.setAdapter(gridAdapter);
recyGrid.setLayoutManager(gridLayoutManager);
}
public void onEventMainThread(CategoryFilterEvent event) {
recyGrid.setVisibilty(GONE);
recyList.setVisiblity(VISIBLE);
}
【问题讨论】:
-
我认为问题在于,当您在其上滑动手指时,底部工作表会滑动(向上和向下),但是当回收站视图进入底部工作表时,甩动(通过手指滑动)动作得到被回收者视图消耗,我认为如果你将回收者视图放在底部表中,那是你的问题。
-
但它对第一个 RecyclerView 非常有效。
-
分享一些代码
-
查看编辑。但我认为实际的代码不会有帮助。
-
是的,它没有帮助。我需要一些代码和详细信息,这些信息与您如何进入活动、第一个回收站视图在哪里以及第二个回收站视图出现在哪里?
标签: android android-layout android-recyclerview bottom-sheet