android 自定义控件 属性配置

需要在res/value/下常见attrs.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyView">
        <attr name="bgColor" format="color" />
        <attr name="progress" format="integer" />
         <attr name="borderWidth" format="dimension" />
    </declare-styleable>
</resources>

自定义控件使用

复制代码
class MyView @JvmOverloads constructor(
    context: Context?,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : View(
    context,
    attrs,
    defStyleAttr
) {

    private var bgColor:Int = 0
    private var progress:Int = 0
    private var borderWidth:Int = 0

    init {
        val typedArray =
            context?.obtainStyledAttributes(attrs, R.styleable.DashboardView, defStyleAttr, 0)
        bgColor = typedArray?.getColor(R.styleable.MyView_bgColor,R.color.black) ?: R.color.black
        progress = typedArray?.getInt(R.styleable.MyView_progress, 10) ?: 10 
        borderWidth = typedArray?.getDimensionPixelSize(R.styleable.MyView_borderWidth,2) ?: 2
        //使用完以后销毁    
        typedArray?.recycle()
    }
    
}
复制代码

 

posted @   荣超  阅读(210)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示