查看: 2891|回复: 0

[Android教程] Kotlin中自定义Android控件

发表于 2018-1-20 08:00:04

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

图片描述

2.创建Kotlin类 继承FrameLayout

  1. class SettingItemView @JvmOverloads constructor(
  2. context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
  3. ) : FrameLayout(context, attrs, defStyleAttr)
复制代码

3.在初始化代码中

  1. init {
  2. val typedArray = context.obtainStyledAttributes(attrs, R.styleable.SettingItemView)}
复制代码

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

  1. <declare-styleable name="SettingItemView">
  2. <!--标题-->
  3. <attr name="itemName" format="string" />
  4. <!--是否显示最右侧的箭头-->
  5. <attr name="isShowMoreImage" format="boolean" />
  6. <!--右侧的对应的值的显示-->
  7. <attr name="itemValue" format="string" />
  8. <attr name="itemValueColor" format="color" />
  9. </declare-styleable>
复制代码

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

在init方法中,记得调用

  1. initView()
  2. typedArray.recycle()
复制代码

在initView的方法中

  1. private fun initView() {
  2. View.inflate(context, R.layout.layout_setting_item, this)
  3. mItemValue.visibility = if (isShowMoreImage) View.VISIBLE else View.GONE
  4. itemName?.let {
  5. mItemName.text = it
  6. }
  7. itemValue?.let {
  8. mItemValue.text = it
  9. mItemValue.visibility = View.VISIBLE
  10. }
  11. if (itemValueColor!=0){
  12. //设置颜色
  13. mItemValue.setTextColor(itemValueColor)
  14. }
  15. }
复制代码

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

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

  1. /*
  2. 因为后面的值会变化,所以提供一个方法
  3. */
  4. fun setItemValue(title:String){
  5. mItemValue.text=title
  6. }
复制代码

接下来 我们试试用下

  1. <com.niu1078.weights.SettingItemView
  2. android:id="@+id/mSettingItem"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. app:itemValue="未设置"
  6. app:isShowMoreImage="true"
  7. app:itemName="个人账户"
  8. />
复制代码


回复

使用道具 举报