[英]Android: best way to make a View disappear after a defined amount of time
[英]How to make a view disappear in time
我有一个片段在单击列表项以显示有关该项目的详细信息后开始。 根据项目,我希望在详细信息片段中显示或不显示视图。 我正在尝试使用 DataBinding 和 LiveData 来设置 xml 中的可见性值。 但是,在我不想显示视图的情况下,视图会在消失并将数据加载到片段之前短暂出现。 我怎样才能使这个视图默认不可见,或者让它在它显示之前消失。
如果在 Fragment 的onViewCreated
视图设置为不可见,则可以在需要时将其设置为可见,以避免闪烁的视觉效果。
在您确实希望显示它的情况下,如果从不可见开始,然后在片刻之后显示它看起来很糟糕,您可能需要考虑从隐藏所有主视图并显示加载指示器(如进度轮)开始- 然后,一旦您加载了数据并决定需要显示哪些视图,您就可以隐藏进度轮并显示正确的视图。
这是一个简单的示例,它会是什么样子 - ViewModel 将决定显示什么内容的决定发布给isLoaded
LiveData,然后 Fragment 相应地更新视图可见性。
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// ...
binding.textA.visibility = View.INVISIBLE
binding.textB.visibility = View.INVISIBLE
binding.progressBar.visibility = View.VISIBLE
viewModel.isLoaded.observe(this) { loadedA ->
binding.progressBar.visibility = View.GONE
if( loadedA ) {
binding.textA.visibility = View.VISIBLE
// show stuff for scenario A
}
else {
binding.textB.visibility = View.VISIBLE
// show stuff for scenario B
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.