这篇文章来介绍自定义组合控件,自定义组合控件的应用场景很多,比如当你的UI如下时:

倘若不使用组合控件,则需要在XML文件中声明4个TextView和4个EditText,而使用了组合控件,则只需要四个即可,方便很多。

自定义组合控件比自定义控件容易许多,因为其不涉及到相关的绘图操作,只需要将已有的控件组合即可,接下来介绍其设计方法:

绘制Layout文件


自定义控件的Layout文件设计和ListView的Item类似,如上图所示的设计,如下即可:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/describe_tv"
android:gravity="bottom"
android:paddingBottom="5dp"/>
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/describe_et"/> </LinearLayout>

声明自定义属性


这里的自定义属性的声明以及获取均和自定义控件相同,如本例中,需要修改的便是TextView的文字以及文字的大小,那么属性声明文件以及属性获取代码,如下即可:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="DescribeView">
<attr name="text" format="string"/>
<attr name="textsize" format="dimension"/>
</declare-styleable>
</resources>
private void initattr(Context context, AttributeSet attrs)
{
TypedArray typedArray=context.obtainStyledAttributes(attrs,R.styleable.DescribeView);
String text=typedArray.getString(R.styleable.DescribeView_text);
tv.setText(text);
float size=typedArray.getDimension(R.styleable.DescribeView_textsize,30);
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,size);
}

这里需要注意的是,tv.setTextSize默认设定的是dp值,而getDimension获取的是px值,所以在setTextSize的时候,要设定size的类型为px,否则会出现字体过大的情况。

在Java文件中修改属性值


想要在Java文件中修改属性值,只需要设置相关的public函数即可,如

public void SetText(String s)
{
tv.setText(s);
}

Android学习——自定义控件(二)的更多相关文章

  1. 【Android】完善Android学习(二:API 2.3.4)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

  2. Android学习十二:自定义控件学习

    自定义控件: 1.定义控件的属性,atts.xml 2.代码实现自定义控件的控制 3.引用该控件 首先定义相关的属性 <?xml version="1.0" encoding ...

  3. Android学习笔记二之初始Activity

    初识Activity,跟着教程学习敲了一遍这一章的内容,下面根据目录结构总结知识点: 一.活动是什么 上篇博文中我们提到了Android四大组件,其中有一个Activity,我们将之称为活动.活动是最 ...

  4. Android学习——自定义控件(一)

    由于之前在实习生面试的时候,被面试官问到有关自定义控件的问题,但没有回答上来,于是回来后便学习了关于自定义控件的相关知识. 自定义控件介绍 自定义控件,按我的理解,大体上分为两种.一种是自己绘图或者加 ...

  5. Android学习总结(二)——Service基本概念和生命周期

    好了,前面我们已经学习了Activity的知识,相信大家也有一定的理解,但是还是不能放松,Android四大组件,我们才学习了一个而已,接下我们继续学习Service.计划总结如下内容: 一.Serv ...

  6. android 学习随笔二十一(内容提供者 )

    一.内容提供者* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的私有数据* 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查 ...

  7. Android学习(二)

    学号 20189214 <Android程序设计>第七周学习总结 教材学习内容总结 监听 设置点击监听的5种方式 方法1:直接用匿名内部类 这是最常用的一种方法,直接setXXXListe ...

  8. Android学习十二---在android上实现图像匹配

    一.效果图及功能描述 效果图 点击ShowImg后 点击match,然后点击showmatch,可以不断点击showmatch. 主要功能描述:显示在SD卡上已经存在的图片test.jpg,根据图片在 ...

  9. Android学习(二十三)SubMenu 子菜单

    一.SubMenu子菜单 和功能菜单相似,但是可以添加子菜单. 二.实现步骤: 1.通过onCreateOptionsMenu方法创建子菜单,可以通过代码动态创建,也可以通过xml进行创建. 2.通过 ...

随机推荐

  1. 在win7系统设置SQL Server2014 express为远程数据

    如何设置远程访问到SQLserver服务器(局域网内的设置) 1.首先,使用Windows+R键 输入services.msc 打开本地服务. *说明:①MSSQLSERVER是正式使用的SQL创建实 ...

  2. 【OpenCV-Python】-几何变换

    涉及函数: cv2.getPerspectiveTransform()cv2.warpAffine() 接收的参数是2✖️3的变换矩阵cv2.warpPerspective() 接收的参数是3✖️3的 ...

  3. (转)nmon和nmon analyser的下载和使用

    原文:https://blog.csdn.net/a7442358/article/details/50186283 nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能 ...

  4. nginx防ddos配置

    Nginx  limit_zone与limit_req_zone (防DDOS攻击模块) http { limit_req_zone $binary_remote_addr zone=one:100m ...

  5. 003-BootStrap完整模板

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  6. elasticsearch 初步

    本文主要内容: 1.elasticsearch的认识(是个啥,能干啥) 2.安装启动.简单集群及关键配置 3.名词解释 4.存取数据,中文分词 ---------------------------- ...

  7. 1、Shell命令行书写规则

    学习目标Shell命令行书写规则 正文对Shell命令行基本功能的理解有助于编写更好的Shell程序,在执行Shell命令时多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如: ro ...

  8. nginx自动部署脚本

    需要下载脚本中需要的jar包nginx.pcre和zlib,自己也上传了一个自己部署的包 https://download.csdn.net/download/qq_17842663/10822976 ...

  9. WPF实现无刷新动态切换多语言(国际化)

    1. 在WPF中国际化使用的是 .xaml文件的格式 如图:Resource Dictionary (WPF) 2. 创建默认的语言文件和其他语言文件 这里以英语为默认语言,新建一个 Resource ...

  10. Hibernate 多对一映射

    <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBL ...