RecyclerView ItemTouchHelper.Callback рисовать раздутый TextView - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь сделать Gmail, как салфетки. Также я хочу получить больше опыта с ItemTouchHelper.Callback, поэтому я не хочу использовать другое готовое решение. Моя проблема в том, что мое раздутое текстовое представление не уважает его границ. Даже если я установил левую и верхнюю части вручную с помощью TextView.layout (l, t, r, b), он всегда отображается в левом и верхнем углу окна рециркулятора. Но если я попытаюсь нарисовать drawable после метода Drawable.setBounds, он рисуется правильно. В чем дело?

enter image description here

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) {

    }

} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...