继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Kotlin中自定义Android控件

杨伟乔
关注TA
已关注
手记 17
粉丝 25
获赞 494

1.在开发Android项目的时候,自定义控件是必不可少的,本手记利用Kotlin语言实现一个类似设置条目的简单的控件

图片描述

2.创建Kotlin类 继承FrameLayout

class SettingItemView @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr)

3.在初始化代码中

    init {
        val typedArray = context.obtainStyledAttributes(attrs, R.styleable.SettingItemView)}

这个地方的处理方式和使用java写法是一样的
我们需要在文件中定义出自定义的属性

 <declare-styleable name="SettingItemView">
        <!--标题-->
        <attr name="itemName" format="string" />
        <!--是否显示最右侧的箭头-->
        <attr name="isShowMoreImage" format="boolean" />
        <!--右侧的对应的值的显示-->
        <attr name="itemValue" format="string" />
        <attr name="itemValueColor" format="color" />
    </declare-styleable>

这里就简单的定义下一些基本的常用的

在init方法中,记得调用

   initView()
        typedArray.recycle()

在initView的方法中

    private fun initView() {
        View.inflate(context, R.layout.layout_setting_item, this)

        mItemValue.visibility = if (isShowMoreImage) View.VISIBLE else View.GONE
        itemName?.let {
            mItemName.text = it
        }
        itemValue?.let {
            mItemValue.text = it
            mItemValue.visibility = View.VISIBLE
        }

        if (itemValueColor!=0){
            //设置颜色
            mItemValue.setTextColor(itemValueColor)

        }
    }

设置控件上的一些初始化的信息

提供一些方法,可以在代码中直接调用

    /*
    因为后面的值会变化,所以提供一个方法
     */
    fun setItemValue(title:String){
        mItemValue.text=title

    }

接下来 我们试试用下

     <com.niu1078.weights.SettingItemView
                android:id="@+id/mSettingItem"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:itemValue="未设置"
                app:isShowMoreImage="true"
                app:itemName="个人账户"
                />
打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP

热门评论

好的学习了

查看全部评论