Java 在RecyclerView中刷卡时不显示Drawable
使用此代码刷卡时,我可以获得背景色:Java 在RecyclerView中刷卡时不显示Drawable,java,android,android-recyclerview,Java,Android,Android Recyclerview,使用此代码刷卡时,我可以获得背景色: @Override public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { super.onChildDraw(c, recycl
@Override
public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
ColorDrawable colorDrawable=new ColorDrawable();
colorDrawable.setColor(getResources().getColor(R.color.white));
colorDrawable.setBounds(viewHolder.itemView.getLeft() , viewHolder.itemView.getTop(), viewHolder.itemView.getRight(),
viewHolder.itemView.getBottom());
colorDrawable.draw(c);
}
但我在刷卡时无法获得图标:
@Override
public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
ColorDrawable colorDrawable=new ColorDrawable();
colorDrawable.setColor(getResources().getColor(R.color.white));
colorDrawable.setBounds(viewHolder.itemView.getLeft() , viewHolder.itemView.getTop(), viewHolder.itemView.getRight(), viewHolder.itemView.getBottom());
colorDrawable.draw(c);
Drawable bitmapDrawable= ResourcesCompat.getDrawable(getResources(), R.drawable.ic_edit_24, null);
bitmapDrawable.setBounds(viewHolder.itemView.getLeft()/2, v viewHolder.itemView.getTopp(), viewHolder.itemView.getLeft()/2, viewHolder.itemView.getBottom());
bitmapDrawable.draw(c);
}
我的代码有什么问题?您正在使用
viewHolder.itemView.getLeft()/2
进行左右绑定。因此它的有效宽度为零
您可能希望使用以下内容:
viewHolder.itemView.getLeft() / 2 - desiredDrawableWidth / 2
viewHolder.itemView.getLeft() / 2 + desiredDrawableWidth / 2
viewHolder.itemView.getLeft()/2-desiredDrawableWidth/2
表示右侧,而viewHolder.itemView.getLeft()/2+desiredDrawableWidth/2
表示左侧?不,相反!第一个小于第二个。bitmapDrawable.setBounds(viewHolder.itemView.getLeft()/2-10/2,viewHolder.itemView.getTop(),viewHolder.itemView.getLeft()/2+10/2,viewHolder.itemView.getBottom())代码>,我已经写了这篇文章,但仍然无法获得iconHmm奇怪,你确定可绘制的不是白色的吗?是的,我确定,它是紫色的,并且可以在背景上看到