Я пытаюсь сделать Gmail, как салфетки. Также я хочу получить больше опыта с ItemTouchHelper.Callback, поэтому я не хочу использовать другое готовое решение. Моя проблема в том, что мое раздутое текстовое представление не уважает его границ. Даже если я установил левую и верхнюю части вручную с помощью TextView.layout (l, t, r, b), он всегда отображается в левом и верхнем углу окна рециркулятора. Но если я попытаюсь нарисовать drawable после метода Drawable.setBounds, он рисуется правильно. В чем дело?
class SwipeTouchHelper : ItemTouchHelper.Callback() {
private lateinit var textView: TextView
override fun getMovementFlags(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder
): Int {
return makeMovementFlags(0, ItemTouchHelper.START or ItemTouchHelper.END)
}
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun onChildDraw(
c: Canvas,
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
dX: Float,
dY: Float,
actionState: Int,
isCurrentlyActive: Boolean
) {
if (!::textView.isInitialized) {
textView = recyclerView.inflate(R.layout.simple_textview) as TextView
}
val itemView = viewHolder.itemView
with(itemView) {
val widthSpec = makeMeasureSpec(width, View.MeasureSpec.EXACTLY)
val heightSpec = makeMeasureSpec(height, View.MeasureSpec.EXACTLY)
textView.measure(widthSpec, heightSpec)
textView.layout(left, top, left + textView.measuredWidth, top + textView.measuredHeight)
}
textView.draw(c)
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
}
}