首页 > 其他分享 >Android 自定义View模板代码记录

Android 自定义View模板代码记录

时间:2023-06-10 17:14:28浏览次数:65  
标签:自定义 LayoutParams AttributeSet attrs context import Android 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$
    }
}

标签:自定义,LayoutParams,AttributeSet,attrs,context,import,Android,android,View
From: https://www.cnblogs.com/stars-one/p/17446506.html

相关文章

  • UE4 自定义StaticMesh碰撞失效
    将画刷编辑的Actor转换成静态网格体后,原有的碰撞消失了,解决办法如下:首先在内容浏览器中找到需要更改碰撞配置的网格体双击进入静态网格编辑器页面,右侧找到细节面板找到碰撞-->碰撞复杂度-->选择将复杂碰撞用作简单碰撞保存即可......
  • 自定义字体/图标的使用
    图标下载网站 选择需要的图标下载代码 下载后的代码 demo_index.html里会教你怎么使用1. 拷贝到index.css将这五个文件拷贝 拷贝到新建的文件夹font 修改里面路径 2.  拷贝到index.css 3.  demo_index.html里有Unicode码 如下图使用 ......
  • Python使用tkinter的Treeview组件实现表格功能
    fromtkinterimportTk,Scrollbar,Framefromtkinter.ttkimportTreeview#创建tkinter应用程序窗口root=Tk()#设置窗口大小和位置root.geometry('500x300+400+300')#不允许改变窗口大小root.resizable(False,False)#设置窗口标题root.title('通信录管理系统')#使......
  • 1、android studio安装与配置
    1、各位小伙伴,安装Androidstudio之前一定要先安装jdb1.8,否则在Androidstudio时检测没有,会自动下载配置,非常卡非常满!jdk1.8的安装与配置文件如下:链接:https://pan.baidu.com/s/11lz8VklxLWKgtg2whxdiIQ提取码:azabAndroidstudio的安装与配置文件如下: ......
  • 改造Python中文拼音扩展库pypinyin补充自定义声母全过程
    问题要从昨天说起,应根球老师发给我一个代码问可能是啥原因,如下:该函数的第二个参数3含义为只保留声母,为啥“应”的声母丢了呢?因为当时正是课间休息,一会儿还要上课,没时间多想,感觉或许是lazy_pinyin()函数的问题,毕竟是个懒惰的函数嘛,于是告诉应老师试试其他函数。今天早上来教研室以后......
  • WebRTC回声消除示例(Android版)
    AndroidApp下载地址:https://gitcode.net/techinged/share/-/raw/master/android/echo_cancel/webrtc_echo_cancel(Android).zip或者https://kdocs.cn/l/ctpgZy0zRHbM1、将AndroidApp文件echo_cancel.apk安装到你的Android手机,Android版本要求在Android4.0(API14)或以上。安......
  • code review (ZZ)
    1)是否有语法错误,编译错误,编译警告。做法:下载最新代码,将编译警告级别提升到最高,检查output信息。2)是否符合需求,完成requirement文档要求的内容,不能多,也不能少。注意:即使发现有问题代码,如果与需求关联不大,不要涉及。应该让每次enhancement和bugfix最简洁,牵涉范围最小......
  • rust rocket读取自定义配置
    Rocket.toml[default.app]meili_url="http://host:port/"meili_master_key="key"main.rs#[derive(Serialize,Deserialize,Clone)]#[serde(crate="rocket::serde")]structAppConfig{ meili_url:String, meili_master_key:......
  • 自定义系统级无窗口全局快捷键热键-Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_2
      自定义系统级无窗口全局快捷键热键-Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801-2023年6月9日 programProject1_SetHotkeyBaiduSyncDisk;usesForms,Unit1_SetHotkeyBaiduSyncDiskin'Unit1_SetHotkeyBaiduSyncDisk.pas'{Form1};{$R*.res}b......
  • 【Interview】Hive原理及调优
    关于Hive的参数配置:Hive的参数配置有3种配置方式:方式1:在hive的配置文件中直接进行修改.方式2:在开启Hive服务的时候,设置参数nohuphive--servicehiveserver2--hiveconf参数名=参数值&方式3:通过set方式进行修改.setmapreduce.job.reduces=3;--分桶......