28 lines
1.4 KiB
Kotlin
28 lines
1.4 KiB
Kotlin
package sushi.hardcore.droidfs.widgets
|
|
|
|
import android.content.Context
|
|
import android.graphics.drawable.ColorDrawable
|
|
import android.graphics.drawable.DrawableContainer
|
|
import android.graphics.drawable.GradientDrawable
|
|
import android.graphics.drawable.StateListDrawable
|
|
import android.util.AttributeSet
|
|
import android.widget.ListView
|
|
import androidx.core.content.ContextCompat
|
|
import sushi.hardcore.droidfs.R
|
|
|
|
open class ColoredBorderListView: ListView {
|
|
constructor(context: Context) : super(context) { applyColor() }
|
|
constructor(context: Context, attrs: AttributeSet): super(context, attrs) { applyColor() }
|
|
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int): super(context, attrs, defStyleAttr) { applyColor() }
|
|
private fun applyColor(){
|
|
val background = ContextCompat.getDrawable(context, R.drawable.listview_border) as StateListDrawable
|
|
val dcs = background.constantState as DrawableContainer.DrawableContainerState
|
|
val drawableItems = dcs.children
|
|
val gradientDrawable = drawableItems[0] as GradientDrawable
|
|
val themeColor = ThemeColor.getThemeColor(context)
|
|
gradientDrawable.setStroke(context.resources.displayMetrics.density.toInt()*2, themeColor)
|
|
super.setBackground(background)
|
|
super.setDivider(ColorDrawable(themeColor))
|
|
super.setDividerHeight(context.resources.displayMetrics.density.toInt()*2)
|
|
}
|
|
} |