gpt4 book ai didi

android - 禁用 NestedScrollview 滚动

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:48 44 4
gpt4 key购买 nike

我的应用程序设计

屏幕 - 1

    <NestedScrollview>
<LinearLayout orientation:horizontal">
<RecyclerView-1>
<Framelayout>(contains Recyclerview-2)
</NestedScroll>

屏幕 - 2

     <NestedScrollview>
<LinearLayout orientation:horizontal">
<RecyclerView-1>
<Framelayout> (fragment changed, contains Recyclerview-3)
</NestedScroll>

现在,如果用户在屏幕 1 上,那么两个 recyclerview 将同时滚动,但在屏幕 2 上,如果用户滚动 RV1,则只有 RV1 会类似地滚动,如果滚动 RV3,则 RV3 将滚动。尝试了各种停止滚动,但无法停止嵌套 ScrollView 的滚动。

最佳答案

您必须创建一个对触摸和滚动事件不执行任何操作的新类:

public class LockableNestedScrollView extends NestedScrollView {
// by default is scrollable
private boolean scrollable = true;

public LockableNestedScrollView(@NonNull Context context) {
super(context);
}

public LockableNestedScrollView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}

public LockableNestedScrollView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
return scrollable && super.onTouchEvent(ev);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return scrollable && super.onInterceptTouchEvent(ev);
}

public void setScrollingEnabled(boolean enabled) {
scrollable = enabled;
}
}

接下来在您的布局中,您通过新类更改 NestedScroll:

    <your.package.name.path.LockableNestedScrollView>
<LinearLayout
orientation:"horizontal"
android:id="@+id/scroll_name">
<RecyclerView-1>
<Framelayout>(contains Recyclerview-2)
</your.package.name.path.LockableNestedScrollView>

最后在你的 Activity 中:

LockableNestedScrollView myScrollView = (LockableNestedScrollView) findViewById(R.id.scroll_name);
myScrollView.setScrollingEnabled(false);

我希望它能帮助到其他人。

关于android - 禁用 NestedScrollview 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50770993/

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