gpt4 book ai didi

java - 在 nestedscrollview 中检查 recyclerview 滚动状态

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:16 34 4
gpt4 key购买 nike

我在 NestedScrollView 中使用 recyclerview,我想在滚动后将我的搜索栏固定到操作栏,并且 recyclerview 项目必须显示在搜索栏下方,我需要为我的 recyclerview 项目进行延迟加载(滚动后从服务器加载下一个项目结束)为此,我需要检查 recyclerview 滚动更改状态,当我在 nestedscrollview 中使用 recyclerview 时,我无法完美地做到这一点。我尝试使用 nestedscrollview 滚动状态更改监听器,但它没有给我想要的东西,而且无法正常工作。

如果将嵌套 ScrollView 放置在 recyclerview 中,则它不起作用。我有延迟加载 recyclerview,但相同的布局包含其他布局,如 slider 、菜单和 recyclerview。我想滚动完整布局,当 recyclerview 结束时 onscroll 然后执行 onload 以从互联网获取更多项目并加载到 recylerview 中。

在这里你可以看到我的代码:

我的布局xml代码

 <android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/main_activity_background">

<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="200dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="@color/colorPrimaryDark"
app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Headline"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:titleEnabled="false">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@drawable/bg_gradient"
android:orientation="vertical"
android:gravity="center_horizontal"
android:paddingBottom="5dp"
android:paddingLeft="@dimen/spacing_large"
android:paddingRight="@dimen/spacing_large"
android:paddingTop="@dimen/spacing_mxlarge">


<LinearLayout
android:id="@+id/layout_dots"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal" />


</RelativeLayout>

</RelativeLayout>

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

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

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:contentInsetStartWithNavigation="0dp"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:contentInsetLeft="0dp"
android:contentInsetStart="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
android:contentInsetRight="0dp"
android:contentInsetEnd="0dp"
app:contentInsetRight="0dp"
app:contentInsetEnd="0dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@drawable/searchbox_stroke_bg"
android:orientation="horizontal">




<EditText
android:layout_width="0dp"
android:layout_weight="0.9"
android:layout_height="40dp"
android:hint="@string/search"
android:textDirection="locale"
android:textAlignment="viewStart"
android:drawablePadding="10dp"
android:layout_gravity="start"
android:paddingStart="15dp"
android:textColor="@color/searchbox_stroke"
android:maxLines="1"
android:singleLine="true"
android:maxLength="25"
android:textSize="17sp"
android:paddingEnd="5dp"
android:background="@android:color/transparent"
android:theme="@style/MainSearchEditTextTheme"
android:drawableStart="@drawable/ic_search"/>



<ImageView
android:layout_width="0dp"
android:layout_weight="0.1"
android:layout_height="16dp"
android:src="@drawable/ic_filter"
android:layout_gravity="center_vertical" />


</LinearLayout>

</android.support.v7.widget.Toolbar>


<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:id="@+id/main_nested_scrollView"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:scrollingCache="true"
android:nestedScrollingEnabled="false"
android:id="@+id/main_recyclerview"
android:layout_marginBottom="5dp"/>



<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/more_items_progress"
android:visibility="gone">

<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/progress_bar"
android:indeterminate="true"/>

</LinearLayout>


</LinearLayout>


<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lyt_progress"
android:layout_centerInParent="true"
android:layout_marginTop="100dp"
android:orientation="vertical">


<com.armanjafari.raimon.widget.ViewLoadingDotsBounce
android:layout_width="50dp"
android:layout_height="40dp"
android:layout_centerHorizontal="true"
android:background="@color/colorAccent">

</com.armanjafari.raimon.widget.ViewLoadingDotsBounce>


</LinearLayout>

</RelativeLayout>



</android.support.v4.widget.NestedScrollView>


</LinearLayout>



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

我检查滚动状态的代码没有用

 nested_content.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY)

{
if (scrollY < oldScrollY)
{ // up
((MainActivity)getActivity()).animateNavigation(false);
}
if (scrollY > oldScrollY)
{ // down
((MainActivity)getActivity()).animateNavigation(true);
}

if (scrollY == ( v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight() ))
{
if (!is_loading)
{
if (current_page < all_pages)
{
//not work right scroll state
}

}

}
}
});

最佳答案

我得到了答案,如果有人有我的问题,请看下面...

要检测 nestedscrollview 是否正确结束,请使用此代码:

nested_content.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY)

{
if (scrollY < oldScrollY)
{ // up
((MainActivity)getActivity()).animateNavigation(false);
}
if (scrollY > oldScrollY)
{ // down
((MainActivity)getActivity()).animateNavigation(true);
}

View view = (View) nested_content.getChildAt(nested_content.getChildCount() - 1);

int diff = (view.getBottom() - (nested_content.getHeight() + nested_content
.getScrollY()));

if (diff == 0)
{
if (merchantList.size()>0)
{

if (!is_loading)
{
if(current_page<=all_pages)
{
// nestedscrollview at end
getMerchants(current_page);
}
}
}

}
}
});

关于java - 在 nestedscrollview 中检查 recyclerview 滚动状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51119513/

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