UI--从学习styleable自定义view属性到一点儿更有意思的尝试

本文介绍了如何在Android中自定义View属性,包括在res/values中声明属性,使用AttributeSet和TypedArray获取属性值,并在XML布局中引用。作者还探讨了如何通过自定义属性绑定点击事件,尝试使用反射在XML中指定方法执行。此外,文章对比了Android本身的onClick属性,并提出了将处理逻辑封装为独立类以实现更好的代码组织。
摘要由CSDN通过智能技术生成

《代码里的世界》UI篇

用文字札记描绘自己 android学习之路

转载请保留出处 by Qiao
http://blog.csdn.net/qiaoidea/article/details/45599593

【导航】
- 多行文本折叠展开 自定义布局View实现多行文本折叠和展开


1.概述

  前面封装view的时候用到了自定义属性,觉得有必要单独讲一下这部分,但是呢,又不想向其他文章一样千篇一律地写这些东西。所以呢,后便会加一些临时的发散思维,引用点有意思的东西。分享东西嘛,随性点儿。
  回归正题,我们想在view中使用自定义属性要怎么做呢?
  其实有如下几点:

  1. declare-styleable 在res/values目录下新建xml文件 自定义你的属性
  2. AttributeSet和TypedArray 在view中获取这些属性对应的值,设置绑定到view上
  3. xmlns申明与引用 在你要使用的地方引入命名空间并使用这些属性,赋值

      然后我们来尝试通过这些步骤做些自定义view,同时呢,我期望能方便快捷的绑定一些事件,执行相应操作。尝试来做一下。
      xml直接定义view和点击事件的demo
      xml直接定义view和点击事件的demo


2.实践

  其实自定义view的属性算是比较常见的,想来想去却没想到什么比较好写的view。就拿最常见的设置选项来说吧,我希望直接通过简单的xml配置就可以设置其字体大小颜色内容,图标和点击触发的事件。

2.1定义属性

  在res/values目录下新建一个attrs.xml的文件,利用declare-styleable定义我们的属性样式。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="RowItem"><!-- 样式名为RowItem-->
        <attr name="textSize" format="dimension"/>
        <attr name="textColor" format="color"/>
        <attr name="text" format="string" />

        <attr name="textStyle"> <!-- text样式(粗体/斜体)-->
            <flag name="blod" value="1"/>
            <flag name="italic" value="2"/>
        </attr>

        <attr name="icon" format="reference"/>

        <attr name="position" > <!-- 该行所处位置-->
            <enum name="single" value="-1"/>
            <enum name="top" value="0"/>
            <enum name="middle" value="1"/>
            <enum name="bottom" value="2"/>
        </attr>
        <attr name="action" format="string" /><!-- 执行动作-->
    </declare-styleable>
</resources>

简单讲解下其中,

  • 标签declare-styleable的name属性 :代表了接下来定义的属性的所属控件(只是用来区分不同declare-styleable的代号而且,不一定非要和属性相关的控件的名称一致)
  • 标签attr就是用来的定义具体的属性,name代表属性名,format代表属性的类型。

  • Attrs.xml文件中属性类型format值的格式

    • 引用型reference

      定义:
      < attr name = “background” format = “reference” />
      使用:
      tools:background = “@drawable/图片ID”

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值