设置页几十行,无非就是"标题 + 右侧控件"的组合。抽一个基类,各种行只用"组合右侧控件"就行。
前言
设置页大概是 App 里"长得最像"的一批页面:左边一个标题,右边可能是开关、可能是输入框、可能是向右的箭头、可能是选中的文字。如果把每一行都单独写一个布局,你会得到几十个几乎一样的 XML,还很难保证对齐一致。
这篇文章讲一个行控件家族的设计:一个统一的行基类,右侧的控件(开关/输入/箭头/文字/进度……)用组合的方式拼进去,形成一个"标题 + 任意右侧控件"的通用行。设置页从此只需"选一种行类型 + 填标题",样式天然统一。
一、痛点:设置行是重复重灾区
一个典型的设置行:
[ 标题文字 ] [ 开关 / 输入 / 箭头 ... ]最常见的坏写法是每种行一个独立布局文件,比如"开关行"一个 XML、"输入行"一个 XML、"箭头行"一个 XML。它们 90% 是重复的(标题样式、左边距、右边距、分割线、点击态),只有右侧那一小块不一样。结果就是几十个 XML,改一次标题字体要改几十处。
二、基类行:标题固定,右侧可插
设计一个"基础设置行"控件,左侧标题是固定的,右侧用一个容器承接不同类型的控件。先定行类型,右侧放什么由类型决定: