首页 > 其他分享 >Android自定义控件

Android自定义控件

时间:2023-06-27 09:58:47浏览次数:49  
标签:控件 自定义 视图 LeftButtonBar attrs context Android public

继承现有控件类

public class LeftButtonBar extends LinearLayout {
    // 默认实现的构造函数 begin
    public LeftButtonBar(Context context) {
        super(context);
    }

    public LeftButtonBar(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public LeftButtonBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

//    public LeftButtonBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
//        super(context, attrs, defStyleAttr, defStyleRes);
//    }
    // 默认实现的构造函数 end

    /**
     * 绘制页面的时候,加载视图并初始化控件。
     * */
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        InitControl();
    }

    private Context ctx;
    public boolean isInit = false;// 是否已经初始化标记,避免重复初始化。
    public boolean isInitView = false;// 是否已经挂载视图文件,避免重复初始化。

    private ListView mListViewLv1;// 列表控件
    // 列表项点击事件
    private OnClickListener itemClickListener;
    public OnClickListener getItemClickListener() {
        return itemClickListener;
    }
    public void setItemClickListener(OnClickListener itemClickListener) {
        this.itemClickListener = itemClickListener;
    }

    // 数据源
    private List<PosButtonDataView> posButtonListLevel1;

    public List<PosButtonDataView> getPosButtonListLevel1() {
        return posButtonListLevel1;
    }

    public void setPosButtonListLevel1(List<PosButtonDataView> posButtonListLevel1) {
        this.posButtonListLevel1 = posButtonListLevel1;
    }

    /**
     * 加载控件、加载视图。
     */
    public void InitControl() {
        try {
            if (isInit == true) {
                return;
            }
            isInit = false;
            if(!isInitView) {
                // 加载视图
                View.inflate(getContext(), R.layout.left_button_bar, this);
                isInitView = true;
            }
            ctx = getContext();
            // 查找视图中的控件
            mListViewLv1 = findViewById(R.id.listViewLv1);

            ListViewAdapterFFLevel1.CurrentSelectItem = -1;
            ListViewAdapterFFLevel1 adapterLv1 = new ListViewAdapterFFLevel1(ctx, R.layout.ff_stock_make_item_lv1, getPosButtonListLevel1());
            adapterLv1.setItemClickListener(getItemClickListener());
            mListViewLv1.setAdapter(adapterLv1);

            // 初始化成功,标记为true,避免重复初始化。
            isInit = true;
        } catch (Exception ex) {
            slog.e("LeftButtonBar", ex);
        }
    }
}

 

标签:控件,自定义,视图,LeftButtonBar,attrs,context,Android,public
From: https://www.cnblogs.com/xsj1989/p/17507859.html

相关文章

  • 前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求
    前端Vue自定义加载中loading加载结束end组件可用于分页展示页面加载请求,请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13219效果图如下:实现代码如下:cc-paging使用方法<!--加载中用法isLoading:是否加载isEnd:是否结束加载--><cc-paging:isLoad......
  • 前端Vue自定义发送短信验证码弹框popup 实现剩余秒数计数 重发短信验证码
    前端Vue自定义发送短信验证码弹框popup实现剩余秒数计数重发短信验证码,请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13207效果图如下:实现代码如下:cc-codeDialog使用方法<!--show:是否显示弹框phone:手机号 autoCountdown:自动时间秒数len:短信......
  • 前端Vue自定义验证码密码登录切换tabs选项卡标签栏标题栏 验证码登录模版 密码登录模
    前端Vue自定义验证码密码登录切换tabs选项卡标签栏标题栏验证码登录模版密码登录模版,请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13221效果图如下:实现代码如下:cc-selectBox使用方法<!--select-arr:选择数组nowindex:当前选择序列@change:切换选择......
  • Android应用开发靠不住,还是Android系统开发香!
    背景2015-2023,我已经工作将近8年了,刚开始我是一名Android应用层开发工程师,2021年我开始转为系统工程师,向着更底层出发了,因为我想提高自己的职场竞争力,应用层开发相对简单,系统层会更有难度,更有挑战,也更不容易被市场淘汰。而且现在的Android市场,Android初级工程师早就已经严重饱和了,......
  • pytest + yaml 框架 -43.支持自定义函数提取返回结果
    前言在yaml用例中提取返回结果,可以支持以下三种表达式jmespath取值语法:body.keyname.keynamejsonpath语法:$..keynamere正则语法以上三种表达式可以满足99%的测试场景需求了,但是有些特殊的需求通过表达式无法取到,为了满足另外1%的需求,可以自定义函数取值。此功......
  • SAP BTP 平台 ABAP 编程环境如何维护自定义 Unit Of Measure 数据库表 T006
    在ABAPOn-Premises系统下,我们可以轻易在SAPGUI里对UnitofMeasure数据库表即T006进行维护:[图片]ABAP数据库表T006是SAP系统中的一个重要数据表,它用于存储与度量单位相关的信息。在SAP系统中,度量单位用于表示各种物料、服务和计量单位。这些信息对于物料管理、......
  • 面试碰壁如何力挽狂澜,有了这份Android指南你也可以有绿色通道!
    简历怎样写才能过初步筛选?大厂面试到底要求什么,关注什么?技术面试如何展示自己的实力?95%的面试者都有这些疑问,所以今天,给大家分享一些面试准备的干货:一、简历要有含金量一份漂亮的简历就是你进入大厂的敲门砖。网上有很多教程教大家如何写出一份漂亮的简历,这里我就不做重复劳动了今......
  • winform控件开发一之复合控件开发(6)切换按钮(Switch)
    使用自定义控件,实现一个切换按钮,显示效果如下: 通过双击实现切换操作实现代码如下:usingSystem.Drawing;usingSystem.Drawing.Drawing2D;usingSystem.Windows.Forms;namespace各种C_sharp功能测试{publicpartialclassSwitch:Control{public......
  • spring boot 编译打包时将自定义引入的.jar包依赖,全部打包进去
    发现自己引入的.jar包,在打包时,.jar包并不会打进去,导致报错。打包时打入自定义.jar包方法:<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</a......
  • Android13 安装最新版 Frida
    本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!Android13安装最新版Frida环境win10Pixel4Android13Python3.9Frida16.1.0Frida-tools12.1.3PC安装......