android 自定义属性步骤
一个程序能否吸引用户,漂亮的UI和优秀的交互是至关重要的因素。因此现在大多数应用不满足了系统提供好的UI组件,而使用自定义组件来达到更好的显示效果。使用自定义组件大多数情况又会使用自定义属性。本文记录了自定义属性的几个步骤:
1.规划好自已需要定义的属性名字及类型
2.在res/values目录下新建一个attrs.xml; 将之前规划好的属性定义在attrs.xml中。具体如下:
1 <declare-styleable name="MyTextView"> 2 <attr name="textColor" format="color"/> 3 <attr name="textSize" format="dimension"/> 4 <attr name="text" format="string"/> 5 <attr name="background" format="reference|color"/> 6 </declare-styleable>
3.属性定义好了,需要在自定义View中,主要是构造方法中获取自定义的属性的值 ,以供我们实现自定义view的需要。自定义属性使用R.styleable引用,获取里面的属性需要使用“名字_属性”的方式。TypeArray在使用完成后要进行recycle().如下所示:
1 public MyTextView(Context context, AttributeSet attrs) { 2 super(context, attrs); 3 mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); 4 TypedArray typeArray = context 5 .obtainStyledAttributes(attrs, R.styleable.MyTextView); 6 7 mTextColor = typeArray.getColor(R.styleable.MyTextView_textColor, Color.BLACK); 8 mTextSize = typeArray.getDimension(R.styleable.MyTextView_textSize, 14); 9 mText = typeArray.getString(R.styleable.MyTextView_text); 10 11 mTextBackground = typeArray.getColor(R.styleable.MyTextView_background, Color.WHITE); 12 13 mTextPaint.setColor(mTextColor); 14 mTextPaint.setTextSize(mTextSize); 15 mTextPaint.setTypeface(Typeface.DEFAULT); 16 17 typeArray.recycle(); 18 }
4.实现好自定义view,然后就是使用自定义view,在xml中设置我们定义的自定义的view的值。如下所示:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:mytextview = "http://schemas.android.com/apk/res/com.example.viewdemo" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" > 7 8 <com.example.view.textview.MyTextView 9 android:layout_width="500dp" 10 android:layout_height="wrap_content" 11 mytextview:text="my name is text view , i am a text view" 12 mytextview:textSize="20sp" 13 mytextview:textColor="#000000" 14 mytextview:background="#ffffff" 15 /> 16 17 </LinearLayout>
需格外注意上在标红的语句。要设置xmlns来引用我们上面定义的自定义属性,命名空间为“mytextview”值为“http://schemas.android.com/apk/res/”+包名“com.example.viewdemo”。然后下面自定义view的tag里面使用命名空间:属性名的方式对自定义的属性进行赋值。
如此,我们的自定义属性即完成,便可以在自定义view中获取属性值,进行使用。
转载于:https://www.cnblogs.com/pillowzhou/p/4665287.html
android 自定义属性步骤相关推荐
- Android自定义属性
上一篇讲解了Android自定义View,这篇来讲解一下Android自定义属性的使用,让你get新技能.希望我的分享能帮助到大家. 做Android布局是件很享受的事,这得益于他良好的xml方式.使 ...
- 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)
从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库) 原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添 ...
- Android自定义属性,format详解
1. reference:参考某一资源ID. (1)属性定义: <declare-styleable name="名称"><attr name="bac ...
- window11离线安装android子系统步骤
window11离线安装android子系统步骤 一.window环境设置: window功能中启用虚拟机平台和启用 "Hyper-V" 后重启 重启的时候检查下BIOS的虚拟化是 ...
- android 自定义属性
今天,简单讲讲android里如何自定义属性. 这个其实我本来是想和自定义控件一起讲的,不过最近看一些自定义控件的代码时,老是因为没有完全理解自定义属性,导致看代码花费过多的时间,所以还是决定提前把这 ...
- Android 编译(1)——Android编译步骤梳理
文章目录 Android编译步骤 envsetup.sh vendorsetup.sh add_lunch_combo命令 lunch命令 Android makefile inherit函数 And ...
- Android自定义属性时TypedArray的使用方法
有时候android传统的页面布局不足以满足我们的需求,常常需要自己定义view,通常继承View,然后重写构造方法以及onDraw等函数,再 具体实现自己定义的复杂view.我们知道在给控件赋属性时 ...
- android自定义属性的使用
最近在学习一个开源的项目,看到人家定义的资源文件有如下标签: 而在该项目中,利用以上路径追溯下去,会追溯到这么一个类文件,所以就迷糊了,定义布局文件跟类有毛关系<比较二>查了下 原来 ...
- Android 自定义属性时TypedArray的使用
对于自定义属性,遵循以下几步,就可以实现: 自定义一个CustomView(extends View )类 编写res/values/attrs.xml,在其中编写styleable和item等标签元 ...
最新文章
- 个人作业1——四则运算题目生成程序
- 比特币区块的产生速度为何被设定为10分钟?
- matlab均值量化函数_在matlab中理解抽样量化的概念:均匀量化的实现
- python-leepcode-作用解析 - 5-27
- mysql架构 视频_企业常见MySQL架构应用实战(高可用集群系统+调优经验)视频课程...
- 使用Css截取字符串
- iOS Newsstand Tutorial
- 制作根文件系统时的错误解决
- 源码编译Ros, Ubuntu18.04系统使用源码编译Ros1,出错集合及其解决办法
- 一天一个小技巧(1)——CSDN编辑器中文字颜色、尺寸、类型修改
- Linux 实例如何开启 MySQL 慢查询功能
- MongoDB 常用shell命令汇总
- Openlaye:学习笔记之事件
- SSM房屋租赁系统,房屋合租系统 租房系统 SpringBoot租房系统
- 计算机组装图纸手画,手工绘图的方法和步骤 -工程
- 还能这样玩——关于一些OI的黑(sao)科(cao)技(zuo)优化
- 2015年阿里巴巴校招面试经验汇总
- iphone手机app通过代理测试本地api方法
- Vue 图片压缩并上传至服务器
- scrapy_redis只能使用redis的db0?
热门文章
- 如何在linux下检测内存泄漏
- double free or corruption (fasttop)
- 不快乐工作场所的生存法则
- Windows server 2003 DHCP全攻略(二)
- android 文件名 标题,有什么方法可以让Android的默认浏览器识别Content-Disposition:attachment下载中的非ASCII文件名?...
- python类装饰器应用_python之描述符应用与类的装饰器
- Kubernetes — Pod
- PostgreSQL — 安装
- PowershellTFS_Part 1
- 零基础学UI设计,哪些知识需要重点学习?