如何将Android复杂页面组件化策略转化为?

摘要:常见方案对比 方案 适用场景 特点 include 布局 静态拆分,不需要复用 简单,布局复用 自定义 View UI+逻辑封装,可复用 封装度高 Fragment 动态加载,独立生命周期 灵活,但复杂 RecyclerV
常见方案对比 方案 适用场景 特点 include 布局 静态拆分,不需要复用 简单,布局复用 自定义 View UI+逻辑封装,可复用 封装度高 Fragment 动态加载,独立生命周期 灵活,但复杂 RecyclerView 列表,每行算一个组件 最常用 实际建议 复杂页面(如患者详情页) ├── 患者基本信息卡片 → include 或 自定义 CardView ├── 医嘱列表区域 → RecyclerView + Adapter ├── 执行记录区域 → RecyclerView + Adapter ├── 备注信息区域 → include └── 底部操作栏 → include 不是越拆越好: 2-3 个简单区域 → 直接写一个 XML 重复使用的区域 → 抽成 include 或自定义 View 需要独立管理生命周期 → Fragment 列表类型 → RecyclerView 多组件编码示例 示例场景:登录页拆分 LoginActivity ├── 顶部 Logo 区域(LogoView) ├── 账号输入区域(AccountInputView) ├── 验证码区域(CaptchaView) └── 登录按钮区域(LoginButtonView) 方案 A:include + ViewBinding(简单拆分) activity_login.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <!-- 顶部 Logo --> <include android:id="@+id/layout_logo" layout="@layout/layout_login_logo" /> <!-- 账号输入 --> <include android:id="@+id/layout_account" layout="@layout/layout_account_input" /> <!-- 验证码 --> <include android:id="@+id/layout_captcha" layout="@layout/layout_captcha" /> <!-- 登录按钮 --> <include android:id="@+id/layout_login_btn" layout="@layout/layout_login_button" /> </LinearLayout> LoginActivity.java public class LoginActivity extends BaseActivity<ActivityLoginBinding> { @Override protected void initView(Bundle savedInstanceState) { // 每个子布局都可以单独操作 binding.layoutLogo.setLogo(R.drawable.ic_logo); binding.layoutAccount.setHint("请输入账号"); binding.layoutCaptcha.setOnRefreshListener(() -> viewModel.loadCaptcha()); binding.layoutLoginBtn.setOnClickListener(() -> submitLogin()); } @Override protected void observeViewModel() { // 集中管理所有 L
阅读全文