簡體   English   中英

如何讓視圖及時消失

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM