Android学习——自定义控件(二)
这篇文章来介绍自定义组合控件,自定义组合控件的应用场景很多,比如当你的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学习——自定义控件(二)相关推荐
- dagger android 学习(二):AndroidInjector的使用
本系列博客主要用于自己学习积累,顺便帮助新手入门,如有问题,多多包涵.更详细的一些使用可以看看其他更加详细的博客. dagger android 学习(一):dagger基础使用 dagger and ...
- 【Android】完善Android学习(二:API 2.3.4)
备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...
- Android学习(二十)Notification通知栏
一.通知栏的内容 1.图标 2.标题 3.内容 4.时间 5.点击后的相应 二.如何实现通知栏 1.获取NotificationManager. 2.显示通知栏:notify(id,notificat ...
- android 学习随笔二十(多媒体编程 )
1.图片处理 加载大图片 图片大小的计算 图片大小 = 图片的总像素 * 每个像素占用的大小 * 单色图:每个像素占用1/8个字节 * 16色图:每个像素占用1/2个字节 * 256色图:每个像素占用 ...
- [Android学习笔记二] View转化Bitmap
在View类中的onDraw方法的参数Canvas是View绘制的背景,要将View转换为Bitmap实际上就是让Canvas上的绘制操作绘制到Bitmap上. View转化为Bitmap也称为截屏, ...
- dagger android,dagger android 学习(二):AndroidInjector的使用
本系列博客主要用于自己学习积累,顺便帮助新手入门,如有问题,多多包涵.更详细的一些使用可以看看其他更加详细的博客. 在安卓实际开发中,我们需要用到许多的activity以及fragment,这样我们在 ...
- 好记性不如烂笔杆-android学习笔记二 Acitvity lifecycle 生命周期
7,//Acitvity lifecycle 生命周期 /** *1,一个Activity就是一个类,并且这个类要继承Activity *2,复写onCreate方法 *3,每个Activity需要在 ...
- Android学习路线的归纳总结,绝对干货!
我们在学习Android的过程中也是一样的.本文将针对Android学习的路线做一个全名的归纳及总结!希望可以帮到你们,让你们少走弯路,提取一些工作中经常用到的技术! Android学习路线一:学习知 ...
- 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner
目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...
最新文章
- httpclient 的简单示例
- Android数据填充器LayoutInflater
- 理解 Delphi 的类(十) - 深入方法[4] - 共同类型的参数的简化写法
- c语言fgets函数的用法
- atoi将字符装换为数字
- 数字图像处理入门(冈萨雷斯第三版)
- ORAN专题系列-20:5G O-RAN 通过TR-069协议实现一体化小基站的自动配置和安装
- Error: Cannot find module ‘webpack‘
- 解决U盘传输文件过大的问题
- 附合导线坐标计算例题_附合导线坐标计算
- 【2020.10.29 洛谷团队赛 普及组】T6 U138025 小武的方程
- jquery File upload 的一个例子
- 单片机继电器控制实验程序C语言,继电器控制实验
- 杠杆股票平仓后该如何处理?
- 计算机网络图片大全,心情图片大全
- NVIDIA显卡3D设置 让你的游戏得到最佳效果
- Linux 下如何添加一个普通用户,并给予用户root权限
- 淘宝钓鱼网站抓不住吗
- 计算机设置桌面三点,再见“电脑弹窗”:3个小设置,让电脑桌面干净如新机...
- Linux内核TSS的使用
热门文章
- Java 接口语法_JAVA接口的基本语法
- Adobe FrameMaker 2019中文版
- 吐槽express 中间件multer
- Visual Studio2005入门.Net系列视频教程
- 19图的搜索算法总结与比较
- 洛谷 P2893 [USACO08FEB]修路Making the Grade 解题报告
- CocosCreator游戏开发---菜鸟学习之路(三)如何在CocosCreator中使用Pomelo
- HMM、MEMM、CRF模型比较和标注偏置问题(Label Bias Problem)
- Codeforces 755B. PolandBall and Game 贪心
- linux 创建连接命令 ln -s 软连接