loadingview
时间: 2023-10-26 10:35:30 浏览: 43
LoadingView是一种常见的UI组件,用于在数据加载或处理期间向用户显示进度指示器。它通常采用动画形式,以便用户可以知道当前正在进行的操作。LoadingView可以有不同的形状和样式,例如圆形进度条、旋转动画、扇形进度条等等。在Android中,可以使用ProgressBar或自定义View实现LoadingView。
相关问题
LoadingView 包裹 Scaffold, 获取不到底部导航栏?
如果你的 `LoadingView` 是包裹在 `Scaffold` 中的,那么可以尝试使用 `Builder` 组件来获取 `Scaffold` 的上下文,再从中获取底部导航栏的高度。
示例代码:
```dart
class LoadingView extends StatelessWidget {
final Widget child;
const LoadingView({Key key, this.child}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Builder(
builder: (BuildContext context) {
// 获取 Scaffold 的上下文
final scaffoldContext = context;
// 显示加载中状态
return Center(
child: CircularProgressIndicator(),
);
},
),
bottomNavigationBar: BottomNavigationBar(
// 底部导航栏代码
),
);
}
}
```
在获取到 `scaffoldContext` 后,就可以通过 `MediaQuery` 来获取底部导航栏的高度了。示例代码:
```dart
// 获取底部导航栏高度
final bottomNavBarHeight = MediaQuery.of(scaffoldContext).padding.bottom;
```
在进行页面布局时,需要将 `bottomNavBarHeight` 的高度减去,以避免遮挡到底部导航栏。例如:
```dart
// 布局代码
child: Container(
height: MediaQuery.of(scaffoldContext).size.height - bottomNavBarHeight,
child: child,
),
```
希望能对你有所帮助!
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { HomeViewModel homeViewModel = new ViewModelProvider(this).get(HomeViewModel.class); binding = FragmentHomeBinding.inflate(inflater, container, false); if (iv == null) { iv = new ViewModelProvider(mainActivity).get(InventoryViewModel.class); } tags = new ArrayList<>(); mainActivity.rfd = 1; // 2. 绑定控件 Kawaii_LoadingView = (Kawaii_LoadingView) binding.bac; Kawaii_LoadingView.startMoving(); view = binding.getRoot(); if (iv.inventoryList == null) { CuToast.info("正在加载文件,请耐心等待..."); iv.inventoryList = new ArrayList<>(); // startAnimation(view); init(); } updateView(); return view; }
这段代码是一个 Android 中的 Fragment 的 `onCreateView` 方法的实现。它会在 Fragment 第一次创建时被调用,用于创建 Fragment 的视图。
在该方法中,首先使用 `FragmentHomeBinding` 对布局进行绑定,然后根据 `InventoryViewModel` 的实例 `iv` 和 `inventoryList` 的状态,执行不同的操作。如果 `inventoryList` 为 `null`,则会弹出一个提示信息,创建一个空的 `inventoryList` 并调用 `init` 方法。最后,调用 `updateView` 方法更新视图,并返回 Fragment 的视图。
除此之外,该方法还创建了一个 `HomeViewModel` 实例 `homeViewModel`,并使用 `Kawaii_LoadingView` 控件实现了一个加载动画。