首页 > 解决方案 > 在 RecyclerView 中滑动时不显示 Drawable

问题描述

使用此代码滑动时,我可以获得背景颜色:

@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);
}

我的代码有什么问题?

标签: javaandroidandroid-recyclerview

解决方案


您正在使用viewHolder.itemView.getLeft()/2左右边界。因此它的有效宽度为零。

您可能正在寻找使用类似的东西:

viewHolder.itemView.getLeft() / 2 - desiredDrawableWidth / 2
viewHolder.itemView.getLeft() / 2 + desiredDrawableWidth / 2

推荐阅读