我正在修改持久性示例并向RecyclerView添加一些分隔线而不是使用CardView。如果我不自定义DividerItemDecoration,它可以工作,我得到分隔线。但是,如果我使用setDrawable自定义它,我会看到如下图所示的内容。我做错了什么?
WordListFragment.java:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mRecyclerView = (RecyclerView) getView().findViewById(R.id.words_list);
DividerItemDecoration divider = new DividerItemDecoration(mRecyclerView.getContext(), DividerItemDecoration.VERTICAL);
divider.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.custom_divider));
mRecyclerView.addItemDecoration(divider);
final WordListViewModel viewModel =
ViewModelProviders.of(this).get(WordListViewModel.class);
subscribeUi(viewModel);
}
custom_divider.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/black" />
<size android:height="1dp"/>
</shape>
评论出setDrawable后:
答案 0 :(得分:0)
出于某种原因,在我做了Build,Make Project后,它似乎开始工作了。不是一个好的答案,但如果我发现更多,我会更新。
更新:在我更改了数据库版本之后,这个问题又发生了,但是又一次......我做了一个Build / Make项目,它再次运行。
答案 1 :(得分:0)
问题在于您的抽屉中的高度。尝试添加宽度。
<size
android:width="1dp"
android:height="1dp" />
答案 2 :(得分:0)
您可以使用GradientDrawable设置分隔线的 size 和 color ,而不是创建可绘制的布局:
DividerItemDecoration itemDecoration = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL);
GradientDrawable drawable = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, new int[]{0xfff7f7f7, 0xfff7f7f7});
drawable.setSize(1,1);
itemDecoration.setDrawable(drawable);
recyclerView.addItemDecoration(itemDecoration);