Android 自定义View模板代码记录

原文地址:Android 自定义View模板代码记录 - Stars-One的杂货小窝

每次写自定义View,需要重写3个构造方法,如果使用Android Studio直接创建,会导致View代码过多,于是稍微删了点多余代码,搞一份简洁的模板代码供自己使用

模版代码


import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.LinearLayout

class MyRangeView : LinearLayout {

    constructor(context: Context) : super(context) {
        init(null, 0)
    }

    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
        init(attrs, 0)
    }

    constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(
        context,
        attrs,
        defStyle
    ) {
        init(attrs, defStyle)
    }

    private fun init(attrs: AttributeSet?, defStyle: Int) {
       
        layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
    }

	lateinit var binding: RangeViewBinding
    private fun init(attrs: AttributeSet?, defStyle: Int) {
		
        binding = RangeViewBinding.inflate(LayoutInflater.from(context), this, true)

        layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)

    }
}

LiveTemplate模板代码:

要知道viewbinding的使用,在引用下面的库

viewbinding

implementation 'com.github.DylanCaiCoding.ViewBindingKTX:viewbinding-ktx:2.1.0'
implementation 'com.github.DylanCaiCoding.ViewBindingKTX:viewbinding-base:2.1.0'

Abbreviation: viewcon

import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout

class $className$ : LinearLayout {

    constructor(context: Context) : super(context) {
        init(null, 0)
    }

    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
        init(attrs, 0)
    }

    constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(
        context,
        attrs,
        defStyle
    ) {
        init(attrs, defStyle)
    }

	lateinit var binding: $ViewBindingClass$
    private fun init(attrs: AttributeSet?, defStyle: Int) {
		
        binding = $ViewBindingClass$.inflate(LayoutInflater.from(context), this, true)

        layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)

		$END$
    }
}
posted @ 2023-06-10 16:56  Stars-one  阅读(28)  评论(0编辑  收藏  举报