在开发中有时候我们需要去自定义一些组合控件,而在使用过程中,又想要自己的组合控件能有原生控件那样可以在xml中使用属性控制,那么我们就需要去自定义一些属性了

1:首先在values/attrs.xml中进行属性的定义

<?xml version="1.0" encoding="utf-8"?>
<resources><declare-styleable name="MyAppTitle"><attr name="TitleText" format="string"/><attr name="LeftText" format="string"/><attr name="RightText" format="string"/></declare-styleable></resources>

2:在定义好这些属性后,就需要在自己自定义的类中进行获取和操作了

public MyAppTitle(Context context, AttributeSet attrs) {super(context, attrs);
    TypedArray ta = context.obtainStyledAttributes(attrs,R.styleable.MyAppTitle);
    mLeftText = ta.getString(R.styleable.MyAppTitle_LeftText);
    mTitleText = ta.getString(R.styleable.MyAppTitle_TitleText);
    mRightText = ta.getString(R.styleable.MyAppTitle_RightText);
    Log.e("Fizzer",mLeftText+mRightText+mTitleText);
}

3:接下来就可以在xml文件布局中进行使用了

<com.fizzer.anbangproject_dahuo_test.Widget.MyAppTitle
    android:id="@+id/viewMyAppTitle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    fizzer:TitleText="标题"
    fizzer:LeftText="左边"
    fizzer:RightText="右边"/>

还有一点要注意的就是,别忘了在根布局中进行命名空间的声明

xmlns:fizzer="http://schemas.android.com/apk/res-auto"

命名空间的名字是可以自定义的,比如文中的“fizzer”,开发者可以自己自行定义,但是在xml文件使用中一定要使用自己定义的命名

4:最后说一点的就是,在attrs文件中styleable中的命名是可以自定义的,但是为了在书写布局文件时有属性的提示功能,所以最好还是保持自定义控件的类名与styleable的命名一致,当然,Google也支持和鼓励开发者使用对应的类名来作为styleable的命名

Android自定义控件封装之自定义属性的实现相关推荐

  1. Android自定义控件及自定义属性

    Android自定义控件及自定义属性 自定义控件 创建自定义控件 自定义一个类,继承View 继承View还是哪个类,取决于你要实现一个什么样的控件 如果你要实现的是一个线性布局的组合控件,就可以继承 ...

  2. 我的新书《Android自定义控件入门与实战》出版啦

    前言:当你回首往事时,不以虚度年华而悔恨,不以碌碌无为而羞耻,那你就可以骄傲的跟自己讲,你不负此生 [Android自定义控件入门与实战]勘误:https://blog.csdn.net/harvic ...

  3. Android 自定义控件打造史上最简单的侧滑菜单

    侧滑菜单在很多应用中都会见到,最近QQ5.0侧滑还玩了点花样~~对于侧滑菜单,一般大家都会自定义ViewGroup,然后隐藏菜单栏,当手指滑动时,通过Scroller或者不断的改变leftMargin ...

  4. 精通Android自定义View(五)自定义属性值使用详情

    1 可查看Android自定义View的基本使用 1 精通Android自定义View(一)自定义控的基本使用 2 精通Android自定义View(二)自定义属性使用详解 2 string 字符串 ...

  5. 精通Android自定义View(四)自定义属性使用详解

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

  6. Android自定义控件之流式布局

    效果图: 一.首先创建我 们的自定义流式布局 public class FlowLayoutView extends ViewGroup {public FlowLayoutView(Context ...

  7. Android自定义控件ImageViwe(一)——依据控件的大小来设置缩放图片显示

    功能: 自定义 ImageView 设置显示图片,如果图片的宽与高小于控件的宽与高,就将图片设置显示到控件的中央, 如果图片的宽与高有一项大于控件的宽与高,那么就将图片进行缩放显示,两者者是显示在控件 ...

  8. Android自定义控件--仿安全卫士中的一键加速【圆形进度条】

    最近看到a10615的:Android自定义控件–仿安全卫士中的一键加速.自己零零散散学习了几个月,也想尝试下.几天的功夫总算把它弄出来,虽然没有泓洋的强大,但是该有的自定义属性也有了,先来看看效果图 ...

  9. Android自定义控件之实现快速检索

    前言:关于这个快速检索我们平常见到的app应用的很多,比如手机通讯录联系人.微信朋友,以及其他的商品列表等,实现的功能就是通过右侧或者左侧的字母进行快速检测,OK!今天我就带领大家来实现这个功能! - ...

  10. Android自定义控件三部曲文章索引

    前言:在我从C++转到Android时,就被Android里炫彩斑斓的自定义控件深深折服,想知道如果想利用C++实现这些功能,那是相当困难的.从那时候起,我就想,等我学会了自定义控件,一定要写一篇系列 ...

最新文章

  1. iptables基础知识.详解
  2. Java.lang.IllegalStateException Activity has been destroyed
  3. OSPF协议概述(一)
  4. php如何读出xml的节点内容 两个例子
  5. python复制sheet_python excel sheet复制
  6. 开发过程中编写的一些批处理
  7. wannacry哭泣勒索病毒一键修复工具
  8. Map 集合的循环遍历 4 种方式
  9. 网络分析shell脚本(实时流量+连接统计)
  10. 开机加电到系统打开究竟发生了什么?(1)
  11. python求解LeetCode习题Compare Version Numbers
  12. MYSQL存储过程,错误处理机制
  13. 分享17个老罗Android开发视频教程(免费下载)
  14. 疯狂java讲义第六章课后习题答案
  15. win11桌面怎么添加桌面小组件 Windows11添加桌面小组件的步骤方法
  16. Kanzi Shader入门
  17. 我的那些年~小小少年~小屁孩
  18. 125亿元!华为公开晒年终奖
  19. Ubuntu 上安装 Freemind 并支持中文
  20. Node.js - 自我总结

热门文章

  1. Android Architecture Components 系列(五)Room
  2. Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取个人信息)...
  3. machine learning(8) -- classification
  4. Servlet的request.getRemoteAddr()方法回去地址是0:0:0:0:0:0:0:1
  5. js 的 protype 小总结
  6. python+selenium自动化测试环境搭建
  7. Ruby数组(2):数组方法详细整理
  8. java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~...
  9. github note
  10. 算法学习笔记(八) 动态规划的一般求解方法