支持圆角的TextView(Textview with rounded corners)-其他
支持圆角的TextView(Textview with rounded corners)
class CusRoundTextView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) :
AppCompatTextView(context, attrs, defStyleAttr) {
var rtvBorderWidth: Int = 0
var rtvBorderColor: Int = Color.BLACK
var rtvRadius: Float = 0f
var rtvBgColor: Int = Color.WHITE
init {
val attributes = context.theme.obtainStyledAttributes(
attrs,
R.styleable.CusRoundTextView,
defStyleAttr,
0
)
if (attributes != null) {
rtvBorderWidth =
attributes.getDimensionPixelSize(R.styleable.CusRoundTextView_rtvBorderWidth, 0)
rtvBorderColor =
attributes.getColor(R.styleable.CusRoundTextView_rtvBorderColor, Color.BLACK)
rtvRadius = attributes.getDimension(R.styleable.CusRoundTextView_rtvRadius, 0f)
rtvBgColor = attributes.getColor(R.styleable.CusRoundTextView_rtvBgColor, Color.WHITE)
attributes.recycle()
drawBg()
}
}
private fun drawBg() {
val gd = GradientDrawable() //创建drawable
gd.setColor(rtvBgColor)
gd.cornerRadius = rtvRadius
if (rtvBorderWidth > 0) {
gd.setStroke(rtvBorderWidth, rtvBorderColor)
}
this.background = gd
}
/**
* 设置背景色 和 圆角
*/
fun setRoundBgColorRes(@ColorRes colorRes: Int, radius: Float = rtvRadius) {
rtvBgColor = resources.getColor(colorRes)
rtvRadius = radius
drawBg()
invalidate()
}
/**
* 设置背景颜色
* @param color
*/
override fun setBackgroundColor(@ColorInt color: Int) {
val myGrad = background as GradientDrawable
myGrad.setColor(color)
}
}
<!--支持圆角的TextView-->
<declare-styleable name="CusRoundTextView">
<attr name="rtvBgColor" format="color" />
<attr name="rtvBorderWidth" format="dimension" />
<attr name="rtvBorderColor" format="color" />
<attr name="rtvRadius" format="dimension" />
</declare-styleable>
app:rtvBgColor="@color/white"
app:rtvRadius="10dp"
————————
class CusRoundTextView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) :
AppCompatTextView(context, attrs, defStyleAttr) {
var rtvBorderWidth: Int = 0
var rtvBorderColor: Int = Color.BLACK
var rtvRadius: Float = 0f
var rtvBgColor: Int = Color.WHITE
init {
val attributes = context.theme.obtainStyledAttributes(
attrs,
R.styleable.CusRoundTextView,
defStyleAttr,
0
)
if (attributes != null) {
rtvBorderWidth =
attributes.getDimensionPixelSize(R.styleable.CusRoundTextView_rtvBorderWidth, 0)
rtvBorderColor =
attributes.getColor(R.styleable.CusRoundTextView_rtvBorderColor, Color.BLACK)
rtvRadius = attributes.getDimension(R.styleable.CusRoundTextView_rtvRadius, 0f)
rtvBgColor = attributes.getColor(R.styleable.CusRoundTextView_rtvBgColor, Color.WHITE)
attributes.recycle()
drawBg()
}
}
private fun drawBg() {
val gd = GradientDrawable() //创建drawable
gd.setColor(rtvBgColor)
gd.cornerRadius = rtvRadius
if (rtvBorderWidth > 0) {
gd.setStroke(rtvBorderWidth, rtvBorderColor)
}
this.background = gd
}
/**
* 设置背景色 和 圆角
*/
fun setRoundBgColorRes(@ColorRes colorRes: Int, radius: Float = rtvRadius) {
rtvBgColor = resources.getColor(colorRes)
rtvRadius = radius
drawBg()
invalidate()
}
/**
* 设置背景颜色
* @param color
*/
override fun setBackgroundColor(@ColorInt color: Int) {
val myGrad = background as GradientDrawable
myGrad.setColor(color)
}
}
<!--支持圆角的TextView-->
<declare-styleable name="CusRoundTextView">
<attr name="rtvBgColor" format="color" />
<attr name="rtvBorderWidth" format="dimension" />
<attr name="rtvBorderColor" format="color" />
<attr name="rtvRadius" format="dimension" />
</declare-styleable>
app:rtvBgColor="@color/white"
app:rtvRadius="10dp"