android - 自定义 ItemDecoration 未绘制在 RecyclerView 的最后一个 View 上

标签 android android-recyclerview

我正在 android 上构建一个应用程序,并且正在使用多个 recyclerviews。

在我使用 recyclerview 的第一页中,一切都完美无缺,我的自定义 ItemDecoration(分隔线)应用于所有 View 。

然后我开始了一个新页面,在其中我在类似的 RecyclerView 上使用相同的分隔线,但在最后一个列表项上底部分隔线不存在。

看到它在一个地方工作得很好,我认为问题不在于自定义 ItemDecoration 类,也不在于 xml。我还尝试对有效的 View 使用相同的 View ,但仍然没有绘制最后一个分隔线。

这是在有问题的 recyclerview 中设置我的适配器的代码:

private void setUpPracticesList() {
    lstPractices = (RecyclerView) getActivity().findViewById(R.id.lstPractices);
    lstPractices.setLayoutManager(new LinearLayoutManager(getActivity()));

    RecyclerView.Adapter<PracticeHolder> adapter = new RecyclerView.Adapter<PracticeHolder>() {

        String[] titles = getResources().getStringArray(R.array.practices_names);
        int[] imageIds = {R.drawable.consultation_meeting_icon,
                R.drawable.monitoring_meeting_icon,
                R.drawable.parent_lectures_icon,
                R.drawable.parent_support_groups_icon,
                R.drawable.staff_courses_icon};

        @Override
        public PracticeHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.kidsense_practices_list_item, parent, false);

            return new PracticeHolder(v);
        }

        @Override
        public void onBindViewHolder(PracticeHolder holder, int position) {
            holder.setName(titles[position]);
            holder.setImage(imageIds[position]);
        }

        @Override
        public int getItemCount() {
            return titles.length;
        }
    };

    lstPractices.setAdapter(adapter);
    lstPractices.setHasFixedSize(true);
    lstPractices.addItemDecoration(new DividerItemDecoration(getActivity(), null));
}

有没有人有什么想法?

最佳答案

我找到了解决方案:

我发现,如果 recyclerview 中没有剩余空间,则 recyclerview 将不会在最后一个 View 的底部显示分隔线。

在我的例子中,问题是我的 recyclerview 处于高度为“wrap_content”的布局中,这意味着在 recyclerview 下方没有剩余空间来显示分隔线。一旦我重新安排我的布局,以便我的 recyclerview 在父布局高度为“match_parent”的情况下有更多空间,最后的分隔线就会显示出来。

关于android - 自定义 ItemDecoration 未绘制在 RecyclerView 的最后一个 View 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39067174/

相关文章:

android - 如何理解 dalvik 字节码中的@VIL

java - 场景 2D 与视口(viewport)坐标和游戏坐标的分离

android - 在列表中添加对象(Android)

android - 抽屉导航主页图标未恢复为汉堡包图标

java - 服务无法正常启动

安卓 : Z-index of a "RecyclerView.ItemDecoration"

android - Espresso :Test swipe to delete item of Recyclerview inside ViewPager

java - fragment 中的 RecyclerView 无法正常工作

android - 未单击图像的嵌套 Recyclerview

android - 将 recyclerview 的最后两项居中?