gpt4 book ai didi

Android CoordinatorLayout : ToolBar scroll only when list starts scrolling

转载 作者:搜寻专家 更新时间:2023-11-01 08:40:39 32 4
gpt4 key购买 nike

我在我的应用程序中使用工具栏并使用这个 link我隐藏了工具栏,它按预期完美工作。但是当列表只有一个/两个项目时,不需要滚动工具栏,因为底部有足够的空间。

隐藏工具栏背后的想法是当列表项超出屏幕高度时利用工具栏空间。但是当列表项很少即小于设备屏幕高度时,我不想滚动工具栏。我如何实现它。 TIA。

代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<include
android:id="@+id/my_awesome_toolbar"
layout="@layout/tool_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" />

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

<TextView
android:id="@+id/empty_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/no_matches_found"
android:visibility="gone" />


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

最佳答案

最后这个逻辑对我有用。

1.获取recycleview列表项的高度并乘以总项数。

  1. 获取显示器的高度。

根据以上两个参数将滚动标志设置为工具栏,如下代码:

private void setScrollIfNeeded() {
int viewItemHeight = getResources().getDimensionPixelSize(R.dimen.dp); // list item size is fixed in this case
int totalCount = mRecycleView.getAdapter().getItemCount();

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;

int listHeight = viewItemHeight * totalCount;
if (listHeight > height) {
setScrollFlags(true);
} else {
setScrollFlags(false);
}
}

public void setScrollFlags(boolean set) {
AppBarLayout.LayoutParams params =
(AppBarLayout.LayoutParams) mTooolbar.getLayoutParams();

if (set)
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
| AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
else

params.setScrollFlags(0);
}

关于Android CoordinatorLayout : ToolBar scroll only when list starts scrolling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32919557/

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