2016-03-08 01:22:56 +01:00
|
|
|
package eu.kanade.tachiyomi.widget
|
|
|
|
|
|
|
|
import android.content.Context
|
2016-07-01 01:39:57 +02:00
|
|
|
import android.support.v7.widget.GridLayoutManager
|
2016-03-08 01:22:56 +01:00
|
|
|
import android.support.v7.widget.RecyclerView
|
|
|
|
import android.util.AttributeSet
|
|
|
|
|
|
|
|
class AutofitRecyclerView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
|
|
|
RecyclerView(context, attrs) {
|
|
|
|
|
2016-07-01 01:39:57 +02:00
|
|
|
private val manager = GridLayoutManager(context, 1)
|
2016-03-08 01:22:56 +01:00
|
|
|
|
|
|
|
private var columnWidth = -1
|
|
|
|
|
|
|
|
var spanCount = 0
|
|
|
|
set(value) {
|
|
|
|
field = value
|
|
|
|
if (value > 0) {
|
|
|
|
manager.spanCount = value
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
val itemWidth: Int
|
|
|
|
get() = measuredWidth / manager.spanCount
|
|
|
|
|
|
|
|
init {
|
|
|
|
if (attrs != null) {
|
|
|
|
val attrsArray = intArrayOf(android.R.attr.columnWidth)
|
|
|
|
val array = context.obtainStyledAttributes(attrs, attrsArray)
|
|
|
|
columnWidth = array.getDimensionPixelSize(0, -1)
|
|
|
|
array.recycle()
|
|
|
|
}
|
|
|
|
|
|
|
|
layoutManager = manager
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onMeasure(widthSpec: Int, heightSpec: Int) {
|
|
|
|
super.onMeasure(widthSpec, heightSpec)
|
|
|
|
if (spanCount == 0 && columnWidth > 0) {
|
2016-07-31 14:07:12 +02:00
|
|
|
val count = Math.max(1, measuredWidth / columnWidth)
|
|
|
|
spanCount = count
|
2016-03-08 01:22:56 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|