Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在RecyclerView中刷卡时不显示Drawable_Java_Android_Android Recyclerview - Fatal编程技术网

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奇怪,你确定可绘制的不是白色的吗?是的,我确定,它是紫色的,并且可以在背景上看到