这篇文章来介绍自定义组合控件,自定义组合控件的应用场景很多,比如当你的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"><TextViewandroid:layout_width="wrap_content"android:layout_height="match_parent"android:id="@+id/describe_tv"android:gravity="bottom"android:paddingBottom="5dp"/><EditTextandroid: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);}

转载于:https://www.cnblogs.com/J-inx/p/6622584.html

Android学习——自定义控件(二)相关推荐

  1. dagger android 学习(二):AndroidInjector的使用

    本系列博客主要用于自己学习积累,顺便帮助新手入门,如有问题,多多包涵.更详细的一些使用可以看看其他更加详细的博客. dagger android 学习(一):dagger基础使用 dagger and ...

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

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

  3. Android学习(二十)Notification通知栏

    一.通知栏的内容 1.图标 2.标题 3.内容 4.时间 5.点击后的相应 二.如何实现通知栏 1.获取NotificationManager. 2.显示通知栏:notify(id,notificat ...

  4. android 学习随笔二十(多媒体编程 )

    1.图片处理 加载大图片 图片大小的计算 图片大小 = 图片的总像素 * 每个像素占用的大小 * 单色图:每个像素占用1/8个字节 * 16色图:每个像素占用1/2个字节 * 256色图:每个像素占用 ...

  5. [Android学习笔记二] View转化Bitmap

    在View类中的onDraw方法的参数Canvas是View绘制的背景,要将View转换为Bitmap实际上就是让Canvas上的绘制操作绘制到Bitmap上. View转化为Bitmap也称为截屏, ...

  6. dagger android,dagger android 学习(二):AndroidInjector的使用

    本系列博客主要用于自己学习积累,顺便帮助新手入门,如有问题,多多包涵.更详细的一些使用可以看看其他更加详细的博客. 在安卓实际开发中,我们需要用到许多的activity以及fragment,这样我们在 ...

  7. 好记性不如烂笔杆-android学习笔记二 Acitvity lifecycle 生命周期

    7,//Acitvity lifecycle 生命周期 /** *1,一个Activity就是一个类,并且这个类要继承Activity *2,复写onCreate方法 *3,每个Activity需要在 ...

  8. Android学习路线的归纳总结,绝对干货!

    我们在学习Android的过程中也是一样的.本文将针对Android学习的路线做一个全名的归纳及总结!希望可以帮到你们,让你们少走弯路,提取一些工作中经常用到的技术! Android学习路线一:学习知 ...

  9. 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner

    目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...

最新文章

  1. httpclient 的简单示例
  2. Android数据填充器LayoutInflater
  3. 理解 Delphi 的类(十) - 深入方法[4] - 共同类型的参数的简化写法
  4. c语言fgets函数的用法
  5. atoi将字符装换为数字
  6. 数字图像处理入门(冈萨雷斯第三版)
  7. ORAN专题系列-20:5G O-RAN 通过TR-069协议实现一体化小基站的自动配置和安装
  8. Error: Cannot find module ‘webpack‘
  9. 解决U盘传输文件过大的问题
  10. 附合导线坐标计算例题_附合导线坐标计算
  11. 【2020.10.29 洛谷团队赛 普及组】T6 U138025 小武的方程
  12. jquery File upload 的一个例子
  13. 单片机继电器控制实验程序C语言,继电器控制实验
  14. 杠杆股票平仓后该如何处理?
  15. 计算机网络图片大全,心情图片大全
  16. NVIDIA显卡3D设置 让你的游戏得到最佳效果
  17. Linux 下如何添加一个普通用户,并给予用户root权限
  18. 淘宝钓鱼网站抓不住吗
  19. 计算机设置桌面三点,再见“电脑弹窗”:3个小设置,让电脑桌面干净如新机...
  20. Linux内核TSS的使用

热门文章

  1. Java 接口语法_JAVA接口的基本语法
  2. Adobe FrameMaker 2019中文版
  3. 吐槽express 中间件multer
  4. Visual Studio2005入门.Net系列视频教程
  5. 19图的搜索算法总结与比较
  6. 洛谷 P2893 [USACO08FEB]修路Making the Grade 解题报告
  7. CocosCreator游戏开发---菜鸟学习之路(三)如何在CocosCreator中使用Pomelo
  8. HMM、MEMM、CRF模型比较和标注偏置问题(Label Bias Problem)
  9. Codeforces 755B. PolandBall and Game 贪心
  10. linux 创建连接命令 ln -s 软连接