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="个人账户"
/>
热门评论
好的学习了