Android Recyclerview:使第一个viewholder项目从顶部开始,并留出一点空间
希望这张照片能解释一下我想做什么。 请记住,textview和recyclerview都是框架布局的视图组 我希望有一个recyclerview,它能将父项与框架布局匹配。显示“地点”一词的Android Recyclerview:使第一个viewholder项目从顶部开始,并留出一点空间,android,android-recyclerview,android-framelayout,Android,Android Recyclerview,Android Framelayout,希望这张照片能解释一下我想做什么。 请记住,textview和recyclerview都是框架布局的视图组 我希望有一个recyclerview,它能将父项与框架布局匹配。显示“地点”一词的textview必须位于recyclerview的顶部。您无法从图像中看到它,但是textview的alpha为0.5,因此它是半透明的 我想做的是使recyclerviewholders,这是您在图片中看到的深绿色项目,从textview的高度下方稍微开始。这样,当用户滚动recyclerview时,项目
textview
必须位于recyclerview的顶部。您无法从图像中看到它,但是textview
的alpha
为0.5,因此它是半透明的
我想做的是使recyclerviewholders
,这是您在图片中看到的深绿色项目,从textview
的高度下方稍微开始。这样,当用户滚动recyclerview
时,项目将在半透明的textview
下优雅地滚动
有没有办法确保recyclerview中的第一个项目从recyclerview的顶部(即文本视图的高度)稍微开始,这样就可以实现此效果?仅尝试第一个项目的项目装饰
public class VerticalSpaceItemDecoration extends RecyclerView.ItemDecoration {
private final int mVerticalSpaceHeight;
public VerticalSpaceItemDecoration(int mVerticalSpaceHeight) {
this.mVerticalSpaceHeight = mVerticalSpaceHeight;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
RecyclerView.State state) {
if (parent.getChildAdapterPosition(view) == 1) {
outRect.top = mVerticalSpaceHeight;
}
}
}
用法
RecycleView recyclerView = (RecyclerView) rootView.findViewById(R.id.fragment_home_recycler_view);
LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(mLinearLayoutManager);
//add ItemDecoration
recyclerView.addItemDecoration(new VerticalSpaceItemDecoration(TOP_ITEM_SPACE));
希望这能有所帮助。仅在第一件物品上尝试物品装饰
public class VerticalSpaceItemDecoration extends RecyclerView.ItemDecoration {
private final int mVerticalSpaceHeight;
public VerticalSpaceItemDecoration(int mVerticalSpaceHeight) {
this.mVerticalSpaceHeight = mVerticalSpaceHeight;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
RecyclerView.State state) {
if (parent.getChildAdapterPosition(view) == 1) {
outRect.top = mVerticalSpaceHeight;
}
}
}
用法
RecycleView recyclerView = (RecyclerView) rootView.findViewById(R.id.fragment_home_recycler_view);
LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(mLinearLayoutManager);
//add ItemDecoration
recyclerView.addItemDecoration(new VerticalSpaceItemDecoration(TOP_ITEM_SPACE));
希望这有帮助。只需创建一个与TextView相同高度的布局即可 layout/header.xml
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/recyclerViewWidth"
android:layout_height="@dimen/yourTextViewHeight"
android:background="@android:color/transparent" />
在<代码>回收视图<代码>的获取视图
中
可设置性(false)
只需创建一个与文本视图高度相同的布局,就像
layout/header.xml
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/recyclerViewWidth"
android:layout_height="@dimen/yourTextViewHeight"
android:background="@android:color/transparent" />
在<代码>回收视图<代码>的获取视图
中
可设置性(false)
您可以试试<代码>android:clipToPadding=“false”
定义如果填充不为零,视图组是否将剪裁其子视图并调整(但不剪裁)其填充的任何EdgeEffect。默认情况下,此属性设置为true
你可以试试<代码>android:clipToPadding=“false” 定义如果填充不为零,视图组是否将剪裁其子视图并调整(但不剪裁)其填充的任何EdgeEffect。默认情况下,此属性设置为true
不会的。请记住,视图组是一个框架布局。如果我按照你的建议做了,recyclerview将不会在textview下滚动-我无法在半透明的textview下看到recyclerview。你的解决方案会起作用,但问题是我将在我的recyclerview中创建一个假的第一项,当你的recyclerview总是在更改时,这将变得难以管理,用户将项目添加到顶部,删除项目等。好的,这很酷。我认为Sachet Bajracharya先生的解决方案会有所帮助,但不会。请记住,视图组是一个框架布局。如果我按照你的建议做了,recyclerview将不会在textview下滚动-我无法在半透明的textview下看到recyclerview。你的解决方案会起作用,但问题是我将在我的recyclerview中创建一个假的第一项,当你的recyclerview总是在更改时,这将变得难以管理,用户将项目添加到顶部,删除项目等。好的,这很酷。我认为Sachet Bajracharya先生的解决方案会有所帮助。这是一个有趣的建议。这是一个有趣的建议。我稍后会试试这个。