Android自定义View使用系统自有属性
原文链接: 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使用系统自有属性的更多相关文章
- Android 自定义view(二) —— attr 使用
前言: attr 在前一篇文章<Android 自定义view -- attr理解>已经简单的进行了介绍和创建,那么这篇文章就来一步步说说attr的简单使用吧 自定义view简单实现步骤 ...
- [原] Android 自定义View步骤
例子如下:Android 自定义View 密码框 例子 1 良好的自定义View 易用,标准,开放. 一个设计良好的自定义view和其他设计良好的类很像.封装了某个具有易用性接口的功能组合,这些功能能 ...
- Android自定义View
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View ...
- Android自定义View之ProgressBar出场记
关于自定义View,我们前面已经有三篇文章在介绍了,如果筒子们还没阅读,建议先看一下,分别是android自定义View之钟表诞生记.android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检 ...
- Android 自定义View (一)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View ...
- Android 自定义View(button)
很多的Android入门程序猿来说对于Android自定义View,可能都是比较恐惧的,但是这又是高手进阶的必经之路,所有准备在自定义View上面花一些功夫,多写一些文章.先总结下自定义View的步骤 ...
- Android自定义View(CustomCalendar-定制日历控件)
转载请标明出处: http://blog.csdn.net/xmxkf/article/details/54020386 本文出自:[openXu的博客] 目录: 1分析 2自定义属性 3onMeas ...
- Android自定义View(LimitScrollerView-仿天猫广告栏上下滚动效果)
转载请标明出处: http://blog.csdn.net/xmxkf/article/details/53303872 本文出自:[openXu的博客] 1分析 2定义组合控件布局 3继承最外层控件 ...
- Android自定义View(三、深入解析控件测量onMeasure)
转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51490283 本文出自:[openXu的博客] 目录: onMeasure什么时候会被调用 ...
- Android自定义View(二、深入解析自定义属性)
转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51468648 本文出自:[openXu的博客] 目录: 为什么要自定义属性 怎样自定义属性 ...
随机推荐
- docker中的mysql时区修改
永久修改 进入容器 docker exec -it mysql5.7 bash 查看当前时区 date -R 修改时区 cp /usr/share/zoneinfo/PRC /etc/localtim ...
- 解决SpringMVC项目Jquery引入不生效问题
根据多方查询,总结Jquery不生效问题如下几种原因: web.xml中拦截了静态资源,但是springmvc配置文件没有对静态资源访问进行设置 <!-- <mvc:resources l ...
- MindSpore导入CUDA算子
技术背景 当今众多的基于Python的AI框架(如MindSpore.PyTorch等)给了开发者非常便利的编程的条件,我们可以用Python的简单的语法写代码,然后由框架在后端自动编译成可以在GPU ...
- CF1706E Qpwoeirut and Vertices 题解
题目链接:CF 或者 洛谷 官解看上去挺智慧的,来点朴素的解法.我们来当做纯 ds 题去做.首先明确一点,图中若干个点关于最早连通性的这个问题可以考虑 \(MST\),我们有一类东西叫 \(krusk ...
- 完蛋,我被offer包围了|秋招自救指南
前言 白泽时隔8年终于记起了b站的密码,这篇文章的视频讲解版已经上传,出镜怪不好意思的,后面写技术文章也会同步用视频的方式讲解,期待您的关注. 公众号:白泽talk,交流群:622383022. 大家 ...
- electron 开发 ,如何使用 第三方 库 进行typescript 开发,举例:jquery 其它的 应该也是一致。
首先要弄明白一点,electron 开发 与 nodejs开发 基本一致. 要引入 jquery 实际上就是 nodejs 引入 jquery 第一步是 去 nmp中央仓库,查看,里面有详细的说明使用 ...
- HBase-Hbase启动异常java.lang.IllegalArgumentException: object is not an instance of declaring class
1.问题描述 HBase启动时异常如下: java.lang.IllegalArgumentException: object is not an instance of declaring clas ...
- [Ngbatis源码学习]Ngbatis源码阅读之连接池的创建
Ngbatis源码阅读之连接池的创建 1. NebulaPool的创建 NgbatisBeanFactoryPostProcessor 这个类实现了 BeanFactoryPostProcessor ...
- 吉特日化MES & 日化制药工厂信息化系统架构图
作者:情缘 出处:http://www.cnblogs.com/qingyuan/ 关于作者:从事仓库,生产软件方面的开发,在项目管理以及企业经营方面寻求发展之路 版权声明:本文版权归作者和博客园 ...
- JS 这一次彻底理解选择排序
壹 ❀ 引 我在 JS 这一次彻底理解冒泡排序 一文中介绍了十大经典排序中的冒泡排序,所谓冒泡排序就是不断比较相邻的两个元素,让较小的往前浮,较大的往后沉,直到所有元素找到自己对应的位置.那么现在我们 ...