Articles of android nestedscrollview

嵌套的scrollview会自动滚动到底部

我在NestedScrollView中有一个GridView。 每当GridView的内容发生变化时,我都使用下面的代码来调整GridView的大小。 这工作正常,但是当我从应用程序的片段3滑回到片段2(NestedScrollView所在的位置)时,NestedScrollView滚动到最底部。 奇怪的是,当从片段1滑动到片段2时不会发生这种情况。 在调整GridView大小后,它也不会直接发生。 如何通过滚动到底部来压制NestedScrollView? private static void resizeGridView(GridView gridView, int items, int columns) { ViewGroup.LayoutParams params = gridView.getLayoutParams(); params.height = singleGridHeight * items; gridView.setLayoutParams(params); gridView.requestLayout(); } 在片段之间滑动时会调用以下系统方法:

使用NestedScrollView,AppBarLayout和CoordinatorLayout平滑滚动和Fling

我正在开发一个应用程序,我正在使用带有CollapsingToolbarLayout和NestedScrollView的AppBarLayout。 我已成功实现了这一点并且工作正常。 现在我想要做的是,在Nestedscrollview上进行快速刷卡时,它应该完全滚动到顶部。 同样,在向屏幕底部投掷(快速向下滑动)时,它必须顺畅地滚动到底部。 但是现在,它只会卡在两者之间,这使它看起来很难看。 我已经尝试了许多可用的解决方案,但对我来说没有任何效果。 我目前的设置如下。 ——content————– 下面显示的最受欢迎的答案之一对我来说也不起作用。 无法滚动AppBarLayout并平滑地折叠工具栏和NestedScrollView

如何在底部检测滚动nestedscrollview android的位置?

我只是想在底部检测滚动nestedscrollview android的位置,以及to call函数。 我的代码是: scroll.getViewTreeObserver() .addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { @Override public void onScrollChanged() { int totalHeight = scroll.getChildAt(0).getHeight(); int scrollY = scroll.getScrollY(); Log.v(“position”, “totalHeight=” + totalHeight + “scrollY=” + scrollY); if (scrollY==totalHeight) { getPlaylistFromServer(“more”); } } }); 但总高度与MAX ScrollY不同。 怎么解决?

Espresso,当NestedScrollView或RecyclerView在CoordinatorLayout中时滚动不起作用

看起来CoordinatorLayout会破坏Espresso操作的行为,例如scrollTo()或RecyclerViewActions.scrollToPosition() 。 NestedScrollView问题 对于像这样的布局: … … 如果我尝试使用ViewActions.scrollTo()滚动到NestedScrollView内的任何视图,我发现的第一个问题是我得到一个PerformException 。 这是因为此操作仅支持ScrollView而NestedScrollView不会扩展它。 这里解释了这个问题的解决方法,基本上我们可以在scrollTo()复制代码并更改约束以支持NestedScrollView 。 如果NestedScrollView不在CoordinatorLayout但是只要将它放在CoordinatorLayout ,滚动操作就会失败,这似乎有效。 RecyclerView问题 对于相同的布局,如果我用RecyclerView替换NestedScrollView ,则滚动也会出现问题。 在这种情况下,我使用RecyclerViewAction.scrollToPosition(position) 。 与NestedScrollView不同,在这里我可以看到一些滚动发生。 但是,它看起来像滚动到错误的位置。 例如,如果我滚动到最后一个位置,它会显示倒数第二个但不是最后一个。 当我将RecyclerView移出CoordinatorLayout ,滚动工作正常。 目前,由于此问题,我们无法为使用CoordinatorLayout的屏幕编写任何Espresso测试。 任何遇到相同问题或知道解决方法的人?

如何滚动到scrollview内的recyclerview中的特定位置?

我已经搜索了很多关于我的查询,但没有一个是有用的。 我有一个recyclelerview和滚动视图中的一些静态数据,它位于root parentlayout中,如下所示。 我已经设定 – scrollview.scrollto(0,0); 因为每当我打开活动时它会跳转到recyclerview firstitem并且它会跳过recyclerview上方的静态数据。 recyclerview.setNestedScrollingEnabled(false); recyclerview.setfocusable(false); 对于smoothscroll。 问题是 – layoutmanager.scrollToPositionWithOffset(pos,0); 它不起作用。 在将适配器设置为recyclerview后,我已设置了aboveline。 也尝试使用NestedScrollView但是徒劳无功。 虽然我用过 layoutmanager.scrollToPosition(pos); 对于那些跳过代码的人,我已将match_parent设置为ScrollView,并将fillviewport设置为true。 这是我的布局。 include layout=”@layout/activity_coupons” android:visibility=”gone” />

嵌套的scrollview + recyclerview,奇怪的自动滚动行为

在一个视图分页器中,我有几个片段,其中一个片段使用带有标题和recyclerview的嵌套scrollview: 标签“header”代表了一个复杂的布局,我不想在这里发布,因为它会大量延伸代码。 当我在标签之间切换时,它会将海峡滚动到回收站视图。 标题是隐藏的,我必须向上滚动才能看到它。 关于是什么原因的任何想法? 如果我可以避免它,我不想在我的适配器中使用types。

如何让EditText占用所需的空间,与上面的内容一起滚动?

背景 我有一个在顶部有一些视图的布局,它应该可以与它们下面的EditText一起滚动。 EditText占用剩余的空间,尽可能多的空间。 这是一个演示它的示例POC布局(这里只使用了2个EditTexts): 我已经设置了一个背景框架,可以直观地显示EditText的大小。 问题 我已经find了很多我写的解决方案,但是没有一个能够很好地处理滚动。 我一直看到的,至少是其中一个问题: 无法滚动整个页面(只有EditText可能是可滚动的,我正在努力避免),因此无法再访问顶部的视图。 当我输入文本时,插入符号可能会出现在可见区域之外 当我输入越来越多的行时,它不会滚动整个页面。 仅在EditText本身。 我试过的 我尝试过这些解决方案: 所有这里 , 这里 , 这里 , 这里 。 也许更多,但我没有保持足够的轨道…… 我在清单中尝试了各种windowSoftInputMode值,并尝试在isNestedScrollingEnabled中设置isNestedScrollingEnabled。 尝试在XML中使用各种配置,让EditText占用所需的空间,以防止它在其中滚动。 这个问题 如何让底部的EditText占用尽可能多的空间,并且仍然可以滚动整个NestedScrollView,而不会出现编辑问题? 编辑:因为原始的应用程序有点复杂,底部有一些视图(在工具栏内部),当你没有专注于底部的EditText时自动隐藏,这就得到了我找不到的答案上class。 此外,我不小心将赏金给予错误的答案,所以这是一个新的赏金,在更复杂的POC上。 问题保持不变。 NestedScrollView应该保留在同一个地方,而不是在关注底部EditText时滚动。 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) container.setOnClickListener { contentEditText.requestFocus() contentEditText.setSelection(contentEditText.length()) } contentEditText.setOnFocusChangeListener { view, hasFocus -> autoHideLayout.visibility = […]

将Android NestedScrollView水平滑动传递给父视图

我试图做一个左右滑动卡系统(如Tinder),卡上有一个NestedScrollView。 目标是,如果用户只是上下滑动,NestedScrollView将滚动,但如果用户向左或向右滑动,则卡将使用该滑动。 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="4dp" card_view:cardUseCompatPadding="true"> <android.support.v4.widget.NestedScrollView android:id="@+id/nested_scroll_view" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="4dp"> <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </android.support.v4.widget.NestedScrollView> </android.support.v7.widget.CardView> (我使用的卡片库是https://github.com/wenchaojiang/AndroidSwipeableCardStack ) compile 'com.github.wenchaojiang:AndroidSwipeableCardStack:0.1.5' 当我在NestedScrollView上放一个margin_top并在这个空白区域内触摸时,CardStack可以正确地抓住我的input,并且卡片向左或向右移动,但是如果我在其他地方触摸并拖动,NestedScrollView会抓住我的input而不pipe方向如何。 我应该扩展/覆盖哪个类/ onTouchEvent来获得这种效果,或者可能会有一个更简单的方法? 谢谢!

SwipeRefreshLayout不拦截NestedScrollingChild的MotionEvent

我正在使用一个NestedScrollWebView (深受NestedScrollWebView影响),它解决了许多与在CoordinatorLayout使用WebView相关的已知 问题 。 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <android.support.design.widget.AppBarLayout android:id="@+id/appBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="enterAlways|scroll|snap"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:titleTextAppearance="@style/TextAppearance.AppCompat.Subhead" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> <ProgressBar android:id="@+id/progressBar" android:layout_width="match_parent" android:layout_height="2dp" android:layout_gravity="bottom" android:visibility="gone" style="@style/Widget.AppCompat.ProgressBar.Horizontal"/> </FrameLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeRefreshLayout" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <com.example.app.widget.NestedScrollWebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.v4.widget.SwipeRefreshLayout> </android.support.design.widget.CoordinatorLayout> NestedScrollWebView适用于AppBarLayout和enterAlways|scroll|snap滚动标志,但与SwipeRefreshLayout 。 我从NestedScrollWebView删除了以下行: setOverScrollMode(WebView.OVER_SCROLL_NEVER); 这确保视图不会显示在滚动指示器之上。 我想要滚动显示指示器,但是即使启用了滚动条,也不会出现以下情况。 据我所知, SwipeRefreshLayout应该拦截任何导致刷新指示符被拖动的触摸事件(基于onInterceptTouchEvent() )。 SwipeRefreshLayout也拒绝任何requestDisallowInterceptTouchEvent()给嵌套滚动的子任何启用; 这对于NestedScrollWebView是正确的。 […]

Android嵌套滚动查看不滚动

我有一个嵌套的滚动视图,其中包含线性布局内的内容。 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:CoverFlowPager="http://schemas.android.com/apk/res-auto" 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"> <android.support.v4.widget.NestedScrollView android:id="@+id/scroll" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="10dp" android:clipToPadding="false" android:fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> </LinearLayout> </android.support.v4.widget.NestedScrollView> </FrameLayout> 我在ViewPager中有这个布局,ViewPager在CordinatorLayout中。 <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:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> 现在,当我滚动视图的视图不滚动。 但是由于布局被放置在Cordinator布局中,所以布局向上移动直到工具栏被隐藏。 但它不滚动。 这是我的主要活动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:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:attrs="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" […]