一个程序能否吸引用户,漂亮的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 自定义属性步骤相关推荐

  1. Android自定义属性

    上一篇讲解了Android自定义View,这篇来讲解一下Android自定义属性的使用,让你get新技能.希望我的分享能帮助到大家. 做Android布局是件很享受的事,这得益于他良好的xml方式.使 ...

  2. 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)

    从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库) 原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添 ...

  3. Android自定义属性,format详解

    1. reference:参考某一资源ID. (1)属性定义: <declare-styleable name="名称"><attr name="bac ...

  4. window11离线安装android子系统步骤

    window11离线安装android子系统步骤 一.window环境设置: window功能中启用虚拟机平台和启用 "Hyper-V" 后重启 重启的时候检查下BIOS的虚拟化是 ...

  5. android 自定义属性

    今天,简单讲讲android里如何自定义属性. 这个其实我本来是想和自定义控件一起讲的,不过最近看一些自定义控件的代码时,老是因为没有完全理解自定义属性,导致看代码花费过多的时间,所以还是决定提前把这 ...

  6. Android 编译(1)——Android编译步骤梳理

    文章目录 Android编译步骤 envsetup.sh vendorsetup.sh add_lunch_combo命令 lunch命令 Android makefile inherit函数 And ...

  7. Android自定义属性时TypedArray的使用方法

    有时候android传统的页面布局不足以满足我们的需求,常常需要自己定义view,通常继承View,然后重写构造方法以及onDraw等函数,再 具体实现自己定义的复杂view.我们知道在给控件赋属性时 ...

  8. android自定义属性的使用

     最近在学习一个开源的项目,看到人家定义的资源文件有如下标签: 而在该项目中,利用以上路径追溯下去,会追溯到这么一个类文件,所以就迷糊了,定义布局文件跟类有毛关系<比较二>查了下 原来 ...

  9. Android 自定义属性时TypedArray的使用

    对于自定义属性,遵循以下几步,就可以实现: 自定义一个CustomView(extends View )类 编写res/values/attrs.xml,在其中编写styleable和item等标签元 ...

最新文章

  1. 个人作业1——四则运算题目生成程序
  2. 比特币区块的产生速度为何被设定为10分钟?
  3. matlab均值量化函数_在matlab中理解抽样量化的概念:均匀量化的实现
  4. python-leepcode-作用解析 - 5-27
  5. mysql架构 视频_企业常见MySQL架构应用实战(高可用集群系统+调优经验)视频课程...
  6. 使用Css截取字符串
  7. iOS Newsstand Tutorial
  8. 制作根文件系统时的错误解决
  9. 源码编译Ros, Ubuntu18.04系统使用源码编译Ros1,出错集合及其解决办法
  10. 一天一个小技巧(1)——CSDN编辑器中文字颜色、尺寸、类型修改
  11. Linux 实例如何开启 MySQL 慢查询功能
  12. MongoDB 常用shell命令汇总
  13. Openlaye:学习笔记之事件
  14. SSM房屋租赁系统,房屋合租系统 租房系统 SpringBoot租房系统
  15. 计算机组装图纸手画,手工绘图的方法和步骤 -工程
  16. 还能这样玩——关于一些OI的黑(sao)科(cao)技(zuo)优化
  17. 2015年阿里巴巴校招面试经验汇总
  18. iphone手机app通过代理测试本地api方法
  19. Vue 图片压缩并上传至服务器
  20. scrapy_redis只能使用redis的db0?

热门文章

  1. 如何在linux下检测内存泄漏
  2. double free or corruption (fasttop)
  3. 不快乐工作场所的生存法则
  4. Windows server 2003 DHCP全攻略(二)
  5. android 文件名 标题,有什么方法可以让Android的默认浏览器识别Content-Disposition:attachment下载中的非ASCII文件名?...
  6. python类装饰器应用_python之描述符应用与类的装饰器
  7. Kubernetes — Pod
  8. PostgreSQL — 安装
  9. PowershellTFS_Part 1
  10. 零基础学UI设计,哪些知识需要重点学习?