Recyclerview:使第一个视图符号项从顶部开始一点空格

Sim*_*mon 1 android android-recyclerview android-framelayout

希望这张照片可以解释一下我想做什么.请记住,textview和recyclerview都是FRAMELAYOUT的ViewGroup.

在此输入图像描述

我想match_parent对FRAMELAYOUT进行回收查看.该textview显示单词"邻居"必须在recyclerview的顶部.您无法从图像中看到它,但是它textview具有alpha0.5,因此它是半透明的.

我想要做的是让recyclerview viewholders你在图片中看到的深绿色项目,在高度下开始textview.这样,当用户滚动时recyclerview,项目将在半透明下正常滚动textview.

有没有办法确保recyclerview中的第一个项目从recyclerview的顶部(即textview的高度)稍微开始,以便可以实现这种效果?

小智 6

仅尝试第一项的项目装饰.

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用法

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));
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


joe*_*joe 6

你可以尝试一下!! android:clipToPadding="false"

如果填充不为零,则定义ViewGroup是否剪切其子节点并将任何EdgeEffect调整大小(但不剪切)到其填充.默认情况下,此属性设置为true.

<android.support.v7.widget.RecyclerView
    android:id="@+id/rv"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:clipToPadding="false"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
Run Code Online (Sandbox Code Playgroud)