原文链接: Android自定义View使用系统自有属性 - Stars-One的杂货小窝

本篇默认各位有自定义View的相关知识,本篇只作为一个小知识点补充

有这样一种情况,比如说我们的一个自定义View中有个maxLines的属性,但是我们会注意到这个maxLines其实Android里面已经存在了(如TextView中),我们能否直接去复用此属性呢?

实现的效果实际就是把代码里我们之前的属性引用写的app:maxLInes改为了android:maxLines

答案是可以的,那么应该如何操作呢?,如下代码

class FlowLayout : ViewGroup {

    constructor(context: Context, attr: AttributeSet) : super(context, attr) {
//注意这里这里的obtainStyledAttributes的第二个参数,数一个int数组(需要有个属性数值,且数组长度为1)
//如果要想使用多个,就像下面那样再写一次
context.obtainStyledAttributes(attr, intArrayOf(android.R.attr.maxLines)).apply {
//取值类型得看对应属性定义的类型
val maxLine = getInt(0, Int.MAX_VALUE)
Log.d("starsone", "maxLine: $maxLine ")
recycle()
} context.obtainStyledAttributes(attr, intArrayOf(android.R.attr.maxRows)).apply {
//这里
val maxRow = getInt(0, Int.MAX_VALUE)
Log.d("starsone", "maxRow: $maxRow ")
recycle()
}
}

之后在xml中使用 (这里注意是android前缀而不是app前缀):

<com.example.myapplication.view.FlowLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/flowlayout"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
+ android:maxLines="10"
+ android:maxRows="11"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FlowLayoutTestActivity"> />

PS: 不过这个方法有个缺陷,就是在xml中写的时候不会有对应属性的代码提示...

参考

Android自定义View使用系统自有属性的更多相关文章

  1. Android 自定义view(二) —— attr 使用

    前言: attr 在前一篇文章<Android 自定义view -- attr理解>已经简单的进行了介绍和创建,那么这篇文章就来一步步说说attr的简单使用吧 自定义view简单实现步骤 ...

  2. [原] Android 自定义View步骤

    例子如下:Android 自定义View 密码框 例子 1 良好的自定义View 易用,标准,开放. 一个设计良好的自定义view和其他设计良好的类很像.封装了某个具有易用性接口的功能组合,这些功能能 ...

  3. Android自定义View

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View ...

  4. Android自定义View之ProgressBar出场记

    关于自定义View,我们前面已经有三篇文章在介绍了,如果筒子们还没阅读,建议先看一下,分别是android自定义View之钟表诞生记.android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检 ...

  5. Android 自定义View (一)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View ...

  6. Android 自定义View(button)

    很多的Android入门程序猿来说对于Android自定义View,可能都是比较恐惧的,但是这又是高手进阶的必经之路,所有准备在自定义View上面花一些功夫,多写一些文章.先总结下自定义View的步骤 ...

  7. Android自定义View(CustomCalendar-定制日历控件)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/54020386 本文出自:[openXu的博客] 目录: 1分析 2自定义属性 3onMeas ...

  8. Android自定义View(LimitScrollerView-仿天猫广告栏上下滚动效果)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/53303872 本文出自:[openXu的博客] 1分析 2定义组合控件布局 3继承最外层控件 ...

  9. Android自定义View(三、深入解析控件测量onMeasure)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51490283 本文出自:[openXu的博客] 目录: onMeasure什么时候会被调用 ...

  10. Android自定义View(二、深入解析自定义属性)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51468648 本文出自:[openXu的博客] 目录: 为什么要自定义属性 怎样自定义属性 ...

随机推荐

  1. navicat破解(15以前的版本)

    navicat破解各种不成功,很耽误事.所以,再次整理一个相对省事有效的办法.内容如下: 一:下载此激活工具 二:按下图生成激活码 1. 2. 点击手动激活 3. 将请求码按图粘贴,按图点击操作便可激 ...

  2. 错误:tensorflow.python.framework.errors_impl.InvalidArgumentError: ValueError: attempt to get argmax of an empty sequence的解决方案

    近日,在使用Cascade R-CNN完成目标检测任务时,我在使用这个模型训练自己的数据集时出现了如下错误: 具体如以下截图所示: 详细错误如下所示: Traceback (most recent c ...

  3. 零基础入门Vue之影分身之术——列表渲染&渲染原理浅析

    听我说 从 条件渲染 那一篇,我学习到了如何用Vue对dom节点根据条件显示 但单单有条件还不够啊,有时候数据是一大坨一大坨的数据,如果Vue不提供咱要么使用"v-html" 要么 ...

  4. 《ASP.NET Core 与 RESTful API 开发实战》-- (第7章)-- 读书笔记(中)

    第 7 章 高级主题 7.2 并发 当两个用户获取同一个资源后,再同时修改该资源,就会导致并发问题 常见实现并发的方法有以下两种: 保守式并发控制,每次修改资源,都锁定资源 开放式并发控制,每次修改资 ...

  5. Sentinel 源码学习

    引入依赖 <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-co ...

  6. STC MCU的软件和硬件PCA/PWM输出

    软件方式输出PWM PWM用于输出强度的控制, 例如灯的亮度, 轮子速度等, STC89/90系列没有硬件PWM, 需要使用代码模拟 使用纯循环的方式实现PWM 非中断的实现(SDCC环境编译) #i ...

  7. SVG与foreignObject元素

    SVG与foreignObject元素 可缩放矢量图形Scalable Vector Graphics - SVG基于XML标记语言,用于描述二维的矢量图形.作为一个基于文本的开放网络标准,SVG能够 ...

  8. RESTful架构与RPC架构

    RESTful架构与RPC架构 在RESTful架构中,关注点在于资源,操作资源时使用标准方法检索并操作信息片段,在RPC架构中,关注点在于方法,调用方法时将像调用本地方法一样调用服务器的方法. RE ...

  9. SpringBoot+MybatisPlus实现关联表查询

    1.说明 最近写代码用到了mybatisPlus涉及到关联表查询.需求是这样的: 我有一个专业表major其中有个字段是所属院系dept_id,我需要通过这个dept_id关联院系表departmen ...

  10. spring boot实现邮箱验证码注册

    最近在设计自己的博客系统,涉及到用户注册与登录验证. 注册这地方我先采用最传统的邮箱验证码方式.具体的实现方式如下: 1.有关如何配置spring boot发送邮件,请参考我的另一篇文章: https ...