android自定义组合view,安卓自定义view之组合view
效果图
image
实现方案
方案概述
通过在xml布局文件中组合控件,通过自定义view类加载xml文件,让外部通过xml属性或者方法来设置数据.
主要实现代码
组合view xml文件
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:gravity="center_vertical"
android:orientation="horizontal">
android:id="@+id/currentLocationLogoIv"
android:layout_width="11.4dp"
android:layout_height="14dp"
android:layout_marginRight="4dp"
android:src="@mipmap/location" />
android:id="@+id/locationNameTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="9dp"
android:textColor="#ff333333"
android:textSize="16sp"
tools:text="科技园" />
android:id="@+id/locationAddressTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:textColor="#999999"
android:textSize="12sp"
tools:text="江苏省南京市" />
自定义view类
class LocationViewWithAttrs(
context: Context,
attrs: AttributeSet?
) : LinearLayout(context, attrs) {
var name: String? = null
var address: String? = null
init {
initTypeValue(context, attrs)
initView(context)
}
private fun initTypeValue(
context: Context,
attrs: AttributeSet?
) {
val typedArray = context.obtainStyledAttributes(attrs, R.styleable.LocationViewWithAttrs)
name = typedArray.getString(R.styleable.LocationViewWithAttrs_locationName)
address = typedArray.getString(R.styleable.LocationViewWithAttrs_locationDesc)
typedArray.recycle()
}
private fun initView(context: Context) {
LayoutInflater.from(context).inflate(R.layout.view_location, this, true)
setData(name,address)
}
fun setData(name: String?, address: String?) {
name?.let { locationNameTv.text = it }
address?.let { locationAddressTv.text = it }
}
}
styles文件
调用方式
xml设置
android:id="@+id/locationView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:locationDesc="A市B区C路D号"
app:locationName="程序园中猿中心" />
通过开放方法设置
locationView.setData("程序园中猿中心", "A市B区C路D号")
备注
如果不需要支持xml设置,那就不需要上面的styles文件以及自定义view文件中对于style的处理方法initTypeValue.
源代码
android自定义组合view,安卓自定义view之组合view相关推荐
- 超全的Android面经_安卓面经(20/30)之自定义View全解析
系列专栏: 安卓高频面经解析大全专栏链接:150道安卓高频面试题全解析 安卓高频面经解析大全目录详情 : 安卓面经_anroid面经_150道安卓常见基础面试题全解析 安卓系统Framework面经专 ...
- android控件向内弧度_安卓自定义 View 基础:坐标系、角度弧度、颜色
安卓自定义View基础 - 坐标系 一.屏幕坐标系和数学坐标系的区别 由于移动设备一般定义屏幕左上角为坐标原点,向右为x轴增大方向,向下为y轴增大方向, 所以在手机屏幕上的坐标系与数学中常见的坐标系是 ...
- android canvas绘制圆角_Android自定义View撸一个渐变的温度指示器(TmepView)
秦子帅明确目标,每天进步一点点..... 作者 | andy 地址 | blog.csdn.net/Andy_l1/article/details/82910061 1.概述 自定义View对需要 ...
- android绘制心形_Android自定义View系列(一)——打造一个爱心进度条
写作原因:Android进阶过程中有一个绕不开的话题--自定义View.这一块是安卓程序员更好地实现功能自主化必须迈出的一步.下面这个系列博主将通过实现几个例子来认识安卓自定义View的方法.从自定义 ...
- 安卓自定义View进阶-分类与流程
自定义View绘制流程函数调用链(简化版) 一.自定义View分类 我将自定义View分为了两类(sloop个人分类法,非官方): 1.自定义ViewGroup 自定义ViewGroup一般是利用现有 ...
- 安卓自定义view全解:初始化,onDraw函数,onMeasure函数,用户手势事件
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓自定义view全解. view类包含如下函数.可供重写. onFinishInflate() 回调方法,当应用从XML加载该组件并用它构建界面之后 ...
- Carson带你学Android:源码解析自定义View Draw过程
前言 自定义View是Android开发者必须了解的基础 网上有大量关于自定义View原理的文章,但存在一些问题:内容不全.思路不清晰.无源码分析.简单问题复杂化 等 今天,我将全面总结自定义View ...
- 【朝花夕拾】Android自定义View篇之(一)View绘制流程
前言 转载请申明转自[https://www.cnblogs.com/andy-songwei/p/10955062.html]谢谢! 自定义View.多线程.网络,被认为是Android开发者必须牢 ...
- 安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例
安卓自定义view中 绘画基本图形点线面,矩形,方形,圆,扇形,文字及沿着特定方向布局,自定义圆角ImageView图片等等相关api使用方法及举例,图片压缩处理逻辑 本文旨在介绍自定义View的实现 ...
最新文章
- PostgreSQL第一步:安装
- 内存溢出分析之工具篇
- abap性能优化——利用凭证的number ranger提高abap程序性能
- python中用*打印一个上三角形和下三角形组成的三角形
- 将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3
- df命令---Linux学习笔记
- xp定时关机软件_好用又免费的电脑定时工具,不用得后悔
- swift - scrollview 判断左右移动, 以及上下两个view联动
- [转载] python的短逻辑
- 美国旧金山之行第三天
- 相同数据源情况下,使用Kafka实时消费数据 vs 离线环境下全部落表后处理数据,结果存在差异...
- 未来教育 · 软件破解
- Java中Base64的解析
- RH8搭建静态网站——基于https协议的静态网站(综合练习)
- QuerySet,本质上是一个给定的模型的对象列表
- 【转】《仙剑奇侠传6》将更换全新引擎
- CIFAR10数据集集 cifar-10-python.tar.gz
- 高可用服务设计之二:Rate limiting 限流与降级
- 平头哥智能语音CB5654开发板如何读取云端的返回值
- RabbitMQ学习笔记:高级特性TTL(过期时间)
热门文章
- java se环境变量_Windows 7中配置JDK(Java SE)环境变量
- Python IDLE换行写,一行写不下,如何换行继续写
- javascript之数组(二)
- java的一些小知识总结
- python调用simulink_[Python-MATLAB] 在Python中调用MATLAB的API
- android split工具,合并APKS为APK工具 Apktool M – AntiSplit on Android v2.4.0|张小北
- mysql 字符转数组_mysql下将分隔字符串转换为数组
- java final 变量 好处_深入理解Java中的final关键字
- java 有序集合_java有哪些有序集合?
- OpenShift 4 - Fedora CoreOS (1) - 最简安装