Files
akmon/doc_zhipao/UTS_ANDROID_GAP_FIX_GUIDE.md
2026-01-20 08:04:15 +08:00

3.6 KiB

UTS Android Gap 属性兼容性修复指南

问题描述

UTS Android 不支持 CSS 的 gap 属性,需要使用传统的 marginpadding 来实现间距效果。

解决方案

1. Flexbox 容器中元素间距

原代码 (使用gap):

.container {
  display: flex;
  gap: 20rpx;
}

修复后 (使用margin):

.container {
  display: flex;
}

.container > .item {
  margin-right: 20rpx;
}

.container > .item:last-child {
  margin-right: 0;
}

2. 垂直布局间距

原代码:

.vertical-container {
  display: flex;
  flex-direction: column;
  gap: 15rpx;
}

修复后:

.vertical-container {
  display: flex;
  flex-direction: column;
}

.vertical-container > .item {
  margin-bottom: 15rpx;
}

.vertical-container > .item:last-child {
  margin-bottom: 0;
}

3. Grid 布局间距

原代码:

.grid-container {
  display: flex;
  flex-wrap: wrap;
  gap: 16rpx;
}

修复后:

.grid-container {
  display: flex;
  flex-wrap: wrap;
  margin: -8rpx; /* 负margin抵消子元素的margin */
}

.grid-container > .item {
  margin: 8rpx; /* gap的一半 */
}

4. 内联元素间距

原代码:

.inline-container {
  display: flex;
  gap: 8rpx;
  align-items: center;
}

修复后:

.inline-container {
  display: flex;
  align-items: center;
}

.inline-container > * {
  margin-right: 8rpx;
}

.inline-container > *:last-child {
  margin-right: 0;
}

批量修复脚本

使用正则表达式查找和替换

  1. 查找: gap:\s*(\d+)(rpx|px);
  2. 替换: /* TODO: 修复gap兼容性 - 原值: $1$2 */

常见模式替换

Timer Controls 类型

/* 原代码 */
.timer-controls {
  display: flex;
  gap: 20rpx;
}

/* 修复后 */
.timer-controls {
  display: flex;
}

.timer-controls .timer-btn {
  margin-right: 20rpx;
}

.timer-controls .timer-btn:last-child {
  margin-right: 0;
}

Action Section 类型

/* 原代码 */
.action-section {
  display: flex;
  gap: 20rpx;
}

/* 修复后 */
.action-section {
  display: flex;
}

.action-section .action-btn {
  margin-right: 20rpx;
}

.action-section .action-btn:last-child {
  margin-right: 0;
}

响应式设计中的Gap修复

媒体查询中的处理

/* 桌面端 */
@media screen and (min-width: 769px) {
  .container .item {
    margin-right: 20rpx;
  }
  
  .container .item:last-child {
    margin-right: 0;
  }
}

/* 移动端 */
@media screen and (max-width: 768px) {
  .container {
    flex-direction: column;
  }
  
  .container .item {
    margin-right: 0;
    margin-bottom: 15rpx;
  }
  
  .container .item:last-child {
    margin-bottom: 0;
  }
}

需要修复的文件列表

已修复

  • training-record.uvue
  • dashboard.uvue (部分)

待修复

  • 🔄 achievements.uvue
  • 🔄 assignment-detail.uvue
  • 🔄 assignments.uvue
  • 🔄 device-management.uvue
  • 🔄 favorite-exercises.uvue
  • 🔄 goal-settings.uvue
  • 🔄 preferences-analytics.uvue
  • 🔄 profile.uvue
  • 🔄 progress.uvue
  • 🔄 records.uvue
  • 🔄 record-detail.uvue
  • 🔄 reminder-settings.uvue
  • 🔄 simple-records.uvue

注意事项

  1. 测试兼容性: 修复后需要在 UTS Android 环境中测试
  2. 保持一致性: 确保所有页面使用相同的间距处理方式
  3. 性能考虑: margin 方式可能会影响布局性能,但兼容性更好
  4. 备份文件: 修改前务必备份原文件

验证修复效果

修复完成后,确保:

  1. 所有元素间距正常显示
  2. 响应式布局工作正常
  3. 没有多余的间距或间距缺失
  4. 在不同屏幕尺寸下表现一致