Android,在RecyclerView的每个项目下显示一个阴影(无边距填充)
我试图在RecyclerView的项目下显示一个阴影,但项目之间没有空间 我试图复制这样的东西: 我已经实现了一个RecyclerView和一个FlexboxLayout,所以项目在屏幕上占据了整个位置 以下是回收者视图声明:Android,在RecyclerView的每个项目下显示一个阴影(无边距填充),android,android-recyclerview,shadow,android-flexboxlayout,Android,Android Recyclerview,Shadow,Android Flexboxlayout,我试图在RecyclerView的项目下显示一个阴影,但项目之间没有空间 我试图复制这样的东西: 我已经实现了一个RecyclerView和一个FlexboxLayout,所以项目在屏幕上占据了整个位置 以下是回收者视图声明: <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layou
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/category_item"
android:clipToPadding="false"
android:paddingEnd="20dp"
android:paddingBottom="20dp"/>
以下是我得到的:
如您所见,我添加了一个填充,以便我们可以看到后面的阴影,但由于项目之间没有空间,因此阴影不会显示。
我希望阴影显示在其他项目的顶部
我不知道如何在项目之间进行美观的分隔,否则,我尝试了使用
DividerItemDecoration
,但效果并不理想。您可以尝试使用适配器的自定义布局。在底部的自定义布局中,可以设置边框或阴影。它会对你有用。我在这里找到了一个解决方案:
我创建了一个渐变资源:
<shape xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="90"
android:centerColor="@color/c1"
android:centerY="90%"
android:endColor="@color/c1_darker"
android:startColor="@color/c1"
android:type="linear" />
</shape>
我将它设置为我的物品的背景,这样我的物品顶部会更暗,看起来像是上面物品的阴影。我试过了,但没有得到想要的效果,我在底部有一条更暗的线,但没有褪色效果,所以看起来不像阴影
@Override
public void onBindViewHolder(final CategoryViewHolder holder, int position) {
if (categories != null) {
Category category = categories.get(position);
holder.itemTitle.setText("Lorem ipsum");
ViewGroup.LayoutParams lp = holder.itemContainer.getLayoutParams();
holder.itemContainer.setBackgroundResource(category.getColor());
if (lp instanceof FlexboxLayoutManager.LayoutParams) {
FlexboxLayoutManager.LayoutParams flexboxLp =
(FlexboxLayoutManager.LayoutParams) holder.itemContainer.getLayoutParams();
flexboxLp.setFlexGrow(1.0f);
}
}
}
<shape xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="90"
android:centerColor="@color/c1"
android:centerY="90%"
android:endColor="@color/c1_darker"
android:startColor="@color/c1"
android:type="linear" />
</shape>