java - 在 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);
}
我的代码有什么问题?
解决方案
您正在使用viewHolder.itemView.getLeft()/2
左右边界。因此它的有效宽度为零。
您可能正在寻找使用类似的东西:
viewHolder.itemView.getLeft() / 2 - desiredDrawableWidth / 2
viewHolder.itemView.getLeft() / 2 + desiredDrawableWidth / 2
推荐阅读
- javascript - 如何根据列表中的复选框禁用 Vue 动态按钮
- c++ - 为什么 rand() % N 对于小型分布来说足够了?
- mongodb - MongoDB:如何根据文档字段计算更新文档字段?
- coldfusion - Coldfusion 自动刷新表输出中的字段
- python - 从列表中获取字符串和字符串长度到字典中
- vue.js - 缺少必需的道具:Vue 中自定义输入组件的模型/值绑定上的“值”
- c++ - 凸包不返回正确的路径(C++ 中的格雷厄姆扫描)
- reactjs - 为什么我的状态值在调度时会中断?
- excel - 使用 Excel VBA Dir() 函数提前退出循环并打开文件目录
- css - 容器类问题中的 Bootstrap 5 侧边栏和导航栏