- StoreActivity 进入时统一弹出 InboundGoodsSearchDialog,关闭后退出页面 - InboundGoodsStoreDialog 支持 goods 可空,适配无溯源码直接入库场景 - FormField 新增 extraApiKeys/extraValues 支持下拉多字段提交(供应商id+type、区域id+name) - DictType 新增 type 字段,供应商选项携带类型信息 - FormFieldAdapter 下拉选中时按 extraApiKeys 映射写入 extraValues - InboundApiService 使用 @JvmSuppressWildcards 修复 Retrofit Map 泛型通配符异常 - BaseActivity 改为继承 AppCompatActivity,主题切换为 MaterialComponents - 日期格式统一为 yyyy-MM-dd HH:mm:ss(去除 ISO 8601 的 T 分隔符) - 搜索列表选中逻辑修复,改用 notifyDataSetChanged 触发刷新
52 lines
1.9 KiB
Kotlin
52 lines
1.9 KiB
Kotlin
package com.sw.inbound.base
|
||
|
||
import android.os.Bundle
|
||
import androidx.appcompat.app.AppCompatActivity
|
||
import androidx.core.view.WindowCompat
|
||
import androidx.core.view.WindowInsetsCompat
|
||
import androidx.core.view.WindowInsetsControllerCompat
|
||
|
||
/**
|
||
* 所有 Activity 的基类
|
||
* - 继承 ComponentActivity,保持与项目其他 Activity 一致
|
||
* - 自动隐藏状态栏和导航栏,实现全屏沉浸式体验
|
||
* - 在屏幕底部上滑时可临时唤出导航栏,松手后自动收回
|
||
*/
|
||
abstract class BaseActivity : AppCompatActivity() {
|
||
|
||
override fun onCreate(savedInstanceState: Bundle?) {
|
||
super.onCreate(savedInstanceState)
|
||
hideSystemBars()
|
||
}
|
||
|
||
/**
|
||
* 窗口焦点变化时回调
|
||
* 场景:弹出 Dialog 后焦点丢失,Dialog 消失后焦点恢复,此时需重新隐藏系统栏,
|
||
* 避免系统栏在 Dialog 关闭后意外"复活"
|
||
*/
|
||
override fun onWindowFocusChanged(hasFocus: Boolean) {
|
||
super.onWindowFocusChanged(hasFocus)
|
||
if (hasFocus) {
|
||
hideSystemBars()
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 隐藏状态栏和导航栏
|
||
* 使用 WindowInsetsControllerCompat(Androidx 推荐方式,向下兼容性好)
|
||
* - 状态栏:完全隐藏
|
||
* - 导航栏:完全隐藏,底部上滑时临时出现,松手后自动收回(BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE)
|
||
*/
|
||
private fun hideSystemBars() {
|
||
// 允许布局延伸到系统栏区域(edge-to-edge),避免内容被系统栏遮挡
|
||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||
WindowInsetsControllerCompat(window, window.decorView).apply {
|
||
// 同时隐藏状态栏和导航栏
|
||
hide(WindowInsetsCompat.Type.systemBars())
|
||
// 底部上滑时临时显示导航栏,松手后自动隐藏(沉浸式 Sticky 模式)
|
||
systemBarsBehavior =
|
||
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
|
||
}
|
||
}
|
||
}
|