2016-07-13 130 views
0

如何更改/删除项目拖动高亮显示?我使用ItemTouchHelper,我知道我需要做的事情与onChildDraw方法,但我不希望覆盖整个ACTION_STATE_DRAG事件,只需要影响拖动项目RecyclerView拖动高亮显示

时出现的是灰色的框

我有什么: gray frame

编辑:我注意到,框架不会出现在预棒棒糖设备,所以也许我只需要设置一些主题口音的颜色,但我无法找到正确的选择为它(尝试colorControlActivatedcolorControlHighlight

+0

什么是灰框? – Harlan

回答

1

我解决我的问题。这个灰色框架只是一个元素的高程,即简单的阴影,表示拖动(当你拿起一个元素拖动时,它变得高于其他元素,所以它有一个影子;我正在这样思考并且是正确的)。所以我设置了viewHolder.itemView.setOutlineProvider(null);并摆脱它。完整的代码在这里:

@TargetApi(Build.VERSION_CODES.LOLLIPOP) 
private void setNullOutlineProvider(View view) { 
    view.setOutlineProvider(null); 
} 

@Override 
public void onChildDraw(Canvas c, RecyclerView recyclerView, 
    RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, 
    boolean isCurrentlyActive) { 

    final View view = viewHolder.itemView; 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
     setNullOutlineProvider(view); 

    if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) { 
     // do some stuff here 
    } else { 
      super.onChildDraw(c, recyclerView, viewHolder, 
       dX, dY, actionState, isCurrentlyActive); 
    } 
} 

或者更好的做在您的自定义适配器

0

覆盖onChildDrawOver()代替onChildDraw()onChildDraw()是绘制背景,onChildDrawOver()是绘制前景,请尝试以下代码:

@Override 
public void onChildDrawOver(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { 
    super.onChildDrawOver(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); 

    if (actionState == ItemTouchHelper.ACTION_STATE_DRAG) { 
     View itemView = viewHolder.itemView; 
     c.save(); 
     c.clipRect(itemView.getLeft() + dX, itemView.getTop() + dY, itemView.getRight() + dX, itemView.getBottom() + dY); 
     c.translate(itemView.getLeft() + dX, itemView.getTop() + dY); 

     // draw the frame 
     c.drawColor(0x88888888); 

     c.restore(); 
    } 
} 
+0

正如您在我的示例中所看到的,框架正在视图下方绘制,因此我不需要使用onChildDrawOver()。当我尝试你的代码时,灰色框架仍然存在,但从onChildDrawOver() – Hahaido

+0

灰色的视图仍然无法实现你的图片中的灰色框架。你是说对话下的阴影吗?或者你想让视图更亮 – Harlan

+0

我的例子代表了实际的图片,而不是我想要实现的。上部对话框 - 是正常状态,下部对话框 - 视图处于拖动状态。 在下部对话框的左侧,您可以看到椭圆灰色笔画的一小部分 - 这是我正在谈论的灰色框架,我想摆脱它 – Hahaido