利用组合控件实现布局文件抽取复用--自定义view属性抽取

Android自定义View实例:深度剖析 水晶/水滴 波浪球 实现步骤详解 1:水晶(水滴),波浪球实现步骤详解 2:自定义View 最佳实现实例 3:波浪线绘制原理 立即下载


通常重用布局文件

简单布局文件:

步骤:

1将要重用的布局 写在布局文件中,

2重用时只需要找到

<include layout="@layout/tool_bar"/>


这种情况适合简单的布局重用,。,每个重用的组件代码修改量比较小的情况,例如ToolBar,

复杂布局文件:
步骤
1.设置需要复用组件的布局

R.layout.setcenter_item
2.自定义组合控件,将布局转成view 加到自定义组合控件上。

public class SettingView extends LinearLayout {}
 

LayoutInflater inflater= LayoutInflater.from(getContext());
        view= inflater.inflate(R.layout.setcenter_item,null);
        addView(view);



3。设置自定义属性。给要添加自定义组合控件的布局添加命名空间
xmlns:myxmlns=""http://schemas.android.com/apk/res/<你的应用程序的包名>"

eg:

放在最上面!

  xmlns:settingview="http://schemas.android.com/apk/com.example.xxx.mobilesoder"

并将属性名,和属性类型值填入到res/values/arrts.xml文件下
velues 下arrts.xml文件,添加属性文件。

<?xml version="1.0" encoding="utf-8"?>

<resources>
<attr name="context" format="string"/>
<attr name="name" format="string"/>
    <declare-styleable name="Popview">  //自定义控件的名字
        <attr name="src" format="reference"/>   //引用类型的值 例如ID
        <attr name="popitemname" format="string"/>
    </declare-styleable>

</resources>

布局如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settingview="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.cuizehui.Actitys.SetActivity">
    <include layout="@layout/tool_bar"/>

    <com.cuizehui.Myview.SettingView
    android:id="@+id/setting_black"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
        settingview:image="@drawable/gv_refuse"
    settingview:name="黑名单服务"
    settingview:context="已开启">
</com.cuizehui.Myview.SettingView>
<com.cuizehui.Myview.SettingView
    android:id="@+id/setting_rock"
    settingview:name="桌面优化服务"
    settingview:context="已开启"
    settingview:image="@drawable/monkeythree"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</com.cuizehui.Myview.SettingView>

    <com.cuizehui.Myview.SettingView
        android:id="@+id/setting_lostfound"
        settingview:name="防丢失服务"
        settingview:context="已开启"
        settingview:image="@drawable/gv_fangdao"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </com.cuizehui.Myview.SettingView>

</LinearLayout>



4.使属性生效:使用构造函数中的第二个参数arrt

普通属性:

        String name= attrs.getAttributeValue("http://schemas.android.com/apk/com.example.cuizehui.mobilesoder","name");
        checkname.setText(name);

自定控件属性:

        TypedArray ta= context.obtainStyledAttributes(attrs,R.styleable.Popview);//通过这种方式获取属性的值。不用命名空间了!
        String name=  ta.getString(R.styleable.Popview_popitemname);

        if(name==null){
            name="";
        }
        Drawable d = ta.getDrawable(R.styleable.Popview_src);
        if (d != null) {
            drawable=d;
        } else {
            throw new RuntimeException("图像资源为空");
        }

	tabTextSize = a.getDimensionPixelSize(0, tabTextSize);
其他属性获取


获取布局内控件进行设置

5自定义组合控件点击事件的处理,由于每一个组合控件的点击事件并不同
这时候我们选择将监听器写在外部并传进去。
public  void itemOnlickLisner(OnClickListener listener){
        view.setOnClickListener(listener);
    }
这样监听处理的具体时间就由调用者完成实现了。

Winform使用TreeView控件实现带复选框的三态树 刚接触c#,项目中用到Treeview实现三态,即选中、未选中、半选中状态,并且要求父子节点选择联动,效果类似下图网上有很多例子,于是研究了一下,结合网上大佬们的例子,所以在这里记录一下。首先新建一个Winform工程拖个TreeView控件,然后运行。。。嗯。。。加点数据吧。private void CreateTree() { TreeNode anime = new TreeNode... 阅读详情

相关推荐

Win10蓝屏代码critical process died的解决方法

critical process died”蓝屏错误是Win10操作系统中较为常见的问题之一。当遇到这一问题时,可以尝试通过修复当前系统、检查硬盘槽位或重新安装系统等方法来解决。本文详细介绍了这三种方法的操作步骤和注意事项,希望能帮助大家摆脱这一困扰。同时,也建议大家在日常使用中注意系统的维护和更新,以减少类似问题的发生。

mmoo_python的博客 9533

Android的 AlertDialog自定义布局与常用布局用法(弹窗)

Android的 AlertDialog自定义布局与常用布局用法

qq_36570506的博客 4587

PyTorch版Unet训练后别只看loss:手把手教你计算并可视化多类别语义分割的mIoU(附完整代码)

本文详细介绍了在PyTorch中使用Unet模型进行多类别语义分割后,如何计算和可视化mIoU(mean Intersection over Union)以全面评估模型性能。通过完整的代码示例和实用技巧,帮助开发者从loss优化转向更精准的区域分割评估,特别适用于医学图像分析等关键场景。

weixin_30906185的博客 435

可展开和收起的LinearLayout

场景介绍 开发的过程中,有时我们需要使用到这样一个功能,在展示一些商品的时候,默认只显示前几个,例如先显示前三个,这样子不会一进入页面就被商品列表占据了大部分,可以先让用户可以看到页面的大概,当用户需要查看更多的商品时,点击“展开”,就可以看到被隐藏的商品,点击“收起”,则又回到一开始的状态,只显示前几个,其他的收起来了。就拿美团外卖的订单详情页的布局作为例子,请看以下图片:

cishaohui的博客 6481

ESD放电模式以及电源箝位 (power clamp )电路

由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工作将输出端Vout电压上拉到高电位。从而Vg端的高电位触发导通了NMOS元件(Mesd)的晶体管,因而ESD电流便经由Mesd而泄放掉。由于晶体管Mesd的栅极导通

DOG_BITE_DOG的博客 2万+

VS2019编译配置Easy3D

VS2019编译配置Easy3D

dayuhaitang1的博客 2596

Android自定义View实现垂直时间轴布局

时间轴时间轴,顾名思义就是将发生的事件按照时间顺序罗列起来,给用户带来一种更加直观的体验。京东和淘宝的物流顺序就是一个时间轴,想必大家都不陌生,如下图:分析实现这个最常用的一个方法就是用ListView,我这里用继承LinearLayout的方式来实现。首先定义了一些自定义属性:attrs.xml

4216

ONVIF协议简介与协议测试工具使用详解

Onvif协议及协议测试工具使用详解

dvlinker的技术专栏 3万+

110.Android简单的自定义折叠文本,展开与隐藏TextView,自定义视图CollapsibleTextView,自定义View,文本展示

如图: 1.第一步,新建CollapsibleTextView类继承LinearLayout: /** * @author CJF */ public class CollapsibleTextView extends LinearLayout { /** * (展开与隐藏)文本颜色 */ private final ForegroundColorSpan expandAndHideColorSpan = new ForegroundColor..

曹二少的博客 2746

【电动汽车再生制动控制技术(万字长文,图文并茂)】

电动汽车再生制动的基本原理是:通过具有可逆作用的电动机/发电机来实现电动汽车动能和电能的转化。在汽车减速或制动时,可逆电机以发电机形式工作,汽车行驶的动能带动发电机将汽车动能转化为电能并储存在储能器(蓄电池或超级电容器)中;在汽车起动或加速时,可逆电机以电动机形式工作,将储存在储能器中的电能转化为机械能给汽车。这对于改善汽车的能量利用效率,延长电动汽车的行驶距离是至关重要的。

优快云-新能源汽车研发测试专业博主 1576

AI绘画与医疗可视化:用AI生成医学插图的实践

医疗可视化是医学教育、临床沟通和学术研究的核心工具。传统医学插图依赖手工绘制或专业3D建模,存在制作周期长、成本高、更新迭代慢等问题。随着深度学习技术的发展,AI绘画工具(如Stable Diffusion、DALL-E)展现出强大的图像生成能力,但医疗领域对插图的解剖准确性、标注规范性和语义完整性有极高要求,通用AI模型难以直接应用。本文聚焦AI技术与医疗领域的交叉创新,系统阐述如何通过数据预处理、模型定制化训练和后处理校验,构建符合医疗标准的插图生成系统。

大模型应用工坊 1788

014 Android 自定义组合控件

1.需求介绍 将已经编写好的布局文件,抽取到一个类中去做管理,下次还需要使用类似布局时,直接使用该组合控件的对象。 优点:可复用。 例如要重复利用以下布局: <RelativeLayout android:padding="5dp" android:layout_width="match_parent" android:lay...

weixin_30508309的博客 139

基于Python爬虫+词云图+情感分析对某东上完美日记的用户评论分析

随着互联网和社交媒体的发展,用户评论成为了消费者表达自己意见和情感的主要途径之一。对于企业来说,深入了解用户对其产品或服务的看法可以帮助他们更好地了解市场需求、产品改进的方向,以及消费者的情感倾向。因此,对用户评论进行分析已经成为了市场研究和商业决策的重要手段之一。

m0_64336780的博客 1万+

自定义控件中的组合控件

自定义控件之组合控件 写Android代码一直都是用的自带控件,有时候一些部分有重复使用,改起来有麻烦。如果把这部分组装起来,形成一个独立的控件,那不是非常爽。于是,就可以使用组合控件。 就比如:一个搜索框里面带有一些按钮,toolbar等等 其实自定义控件分为两种: 一种是这种组合控件,将原有的控件组装为一个常用的控件; 另一种是完全自己画出来的控件,无法使用自带的控件实现 1...

wisdomzhang的博客 103

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

android自定义组合view,Android中View自定义组合控件的基本编写方法

有很多情况下,我们只要运用好Android给我提供好的控件,经过布局巧妙的结合在一起,就是一个新的控件,我称之为“自定义组合控件”。那么,这种自定义组合控件在什么情况下用呢?或者大家在做项目时候会发现,某些布局会被重复的利用,同一个布局的XML代码块会被重复的复制黏贴多次,这样会造成代码结构混乱不说,代码量也会增大,各种控件都需要在Java代码中被申明和处理相应的逻辑,工作量着实不小,所以,必须要...

weixin_39648297的博客 249

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android 自定义控件之组合控件

一、前言        最近做一个项目又一次用到类似像微信一样的标题栏,之前就实现过一次,但是几个月没有用了,就忘记了,导致这次再次使用却调了大半天才完成。因此,写下这篇文章记录下来,同时再一次巩固自己的理解。        这回使用的Android的自定义控件中的组合控件。二、自定义组合控件原理        项目中经常会遇见很多相似或者相同的布局,比如APP的标题栏,通过将这些布局抽取出来,放...

gd6321374的专栏 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

自定义组合控件

当一系列控件组成的条目,需要重复使用时,为了减轻xml中的代码,所以讲一系列控件进行整合:如下步骤自定义组合控件: 1.将已经编写好的布局文件,抽取到一个类中去做管理,下次还需要使用此布局结构的时候, 直接使用组合控件对应的对象.2.将组合控件的布局,抽取到单独的一个xml中3.通过一个单独的类,去加载此段布局文件.如下演示:比如说我要实现一个,如下有复选功能的界面。 上面的界面的

Chase_Java的博客 564

安卓中自定义简单的组合控件

一、画组合控件的UI 既然是自定义组合控件,那么UI肯定得自定义,笔者的自定义组合控件效果图和代码如下: 代码:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_

钟小林的博客 670

android 中的组合控件的设计

在开发应用程序的时候,很多时候会使用到几个重复的控件,例如Android手机的设置界面里面的位置服务里面的每一栏都是组合控件,也就是说多个控件组成一个整体,如下图所示: 红色方框里面的是由两个TextView和一个CheckBox组合而成的一个组合控件,要是能把这两个控件组合成一个控件在开发过程中就有有很大的方便, 在主布局文件中activity_mian: <RelativeLay

chenfengdejuanlian的专栏 706

自定义组合布局

目的:方便布局的复用——在项目中需要重复使用某个布局时。 方法:将已经编写好的布局文件,抽取到一个类中去做管理,下次还需要使用此布局结构的时候,直接使用组合控件对应的对象. 实现: 1.将组合控件的布局,抽取到单独的一个xml中 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" an

yh_youkuaiyun.com的博客 345

Android 手机卫士--自定义组合控件构件布局结构

由于设置中心条目中的布局都很类似,所以可以考虑使用自定义组合控件来简化实现 本文地址:http://www.cnblogs.com/wuyudong/p/5909043.html,转载请注明源地址。 自定义组合控件 1.将已经编写好的布局文件,抽取到一个类中去做管理,下次还需要使用此布局结构的时候,直接使用组合控件对应的对象. 2.将组合控件的布局,抽取到单独的一个xml中 新建布局...

weixin_30399797的博客 106

自定义组合式控件和自定义属性总结

下图为上图中选中的第一个条目UI的布局代码: 看第一张图,我们发现, 这个界面中有五个大致相同的UI,而从上段代码中我们发现,单单其中一个UI的布局代码还是有点多的,试想,如果五个这样的UI的布局代码都写在一个xml文件中,那么这个xml文件看起来就很冗长,而且代码的复用性很不好。遇到这种情况,我们就要想办法把这些重复的代码抽取出来,让需要的UI复用即可,这就涉及到自定义组合式控件(这里的组

jack_bear_csdn的博客 669

Android 自定义控件

一、自定义View主要方法 自定义View的三种方式: 1)继承控件:继承原生原生控件,通过添加新方法或者重新原生方法来扩展原生控件 2)组合控件:创建一个.xml布局文件,然后将该布局与该控件绑定,一般是该控件可以复用,或者页面太大,可以把某块布局抽取成一个控件,来简化activity的代码。 3)绘制控件:继承View,重写onMeasure、onSizeChanged、onLayout、onDraw等方法来完成控制的绘制,后面会重点讲解。 继承控件举例,如常用的圆形图片: public class C

qq_36658567的博客 400

自定义控件

自定义控件的方式 1,组合方式 2,直接继承于view 3,直接继承于viewgroup 4,继承于其他的view,对功能进行增强(例如继承listview编成下拉刷新listview) 优酷菜单 1,布局 这里有是三个菜单,每个菜单中有一些按钮,可以用3个容器(relativelayout)来表示3个菜单 往里面添加按钮就可以了(宽是高的两倍) 2,控件的初始化 单击菜单一和

sinat_33557555的博客 209
上一篇: ToolBar代替Actionbar在AppCompatActivity的使用
下一篇: WindowManager 和window 悬浮窗口
Nela
博客等级 码龄11年 9粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值