这篇文章来介绍自定义组合控件,自定义组合控件的应用场景很多,比如当你的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. javascipt中数组的常见操作

    1.与lua不同,即使数组中间有null或者undefined,仍然能求出正确的长度 2.length 改变.length也会改变数组的大小 3. indexOf arr.indexOf(a)会返回第 ...

  2. Locust 基本使用

    Locust 使用Python代码来定义用户行为,用它可以模拟百万级的并发用户来访问系统. 与其他性能工具对比如下: LoadRunner 商业性能测试工具,报告完整,不支持二次开发 开发语言:C/J ...

  3. Windows下代替自带cmd的开源软件cmder

    cmder cmder是一个增强型命令行工具,不仅可以使用windows下的所有命令,更爽的是可以使用linux的命令,shell命令 下载 Cmder官网 下载的时候,会有两个版本,分别是mini与 ...

  4. ngx.location.capture 只支持相对路径,不能用绝对路径

    ngx.location.capture 是非阻塞的,ngx.location.capture也可以用来完成http请求,但是它只能请求到相对于当前nginx服务器的路径,不能使用之前的绝对路径进行访 ...

  5. ES6数组新加 Buff

    欢迎关注本人公众号<迈向大前端>,里面有15本前端相关的电子书,送给在前端路上迷茫的同学们! 本章篇幅很长,分开来发,这一小篇主要讲ES6数组的Array.of()和Array.from( ...

  6. Python基础(9) - 类

    Python 看下面一个简单类: >>> class MyClass(object): ... """ ... this is a class with ...

  7. 转载:怎样用通俗的语言解释REST,以及RESTful?

    作者:覃超链接:https://www.zhihu.com/question/28557115/answer/48094438来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  8. 巧用hover改变css样式和背景

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. nginx 代理转发 wcf接口

    前言 以前对比过enginx和其他几个web服务器(IIS,Apache,lighttpd)的处理静态文件的能力,enginx是最好的,甚至超过其他的几倍. 虽说enginx官方声明在Windows上 ...

  10. What is the difference between modified duration, effective duration and duration?

    Macaulay Duration (traditionally just called Duration) The formula usually used to calculate a bond' ...