ConstraintLayout屬性之Group中遇到的坑 設置子View不顯示沒效果

記錄一個在使用ConstraintLayout遇到的坑。
ConstraintLayout爲了方便對view的管理 ,出現了Group 但是在使用中我遇到一個問題,那麼就是把多個控件添加到Group中後,對單個View的進行setVisibility爲Gone的時候沒有效果。
那麼我來瞅瞅爲爲啥沒效果,來看下Group的源碼 對應的這段函數
在這裏插入圖片描述
從上圖可以看到,Group在使用後,會對它所管理的所有view的顯示進行重新賦值,重新設置它所管理的ID顯示效果。當我們設置爲Gone的時候,ConstraintLayout會重新佈局,會重新調用這個方法,而我們設置的值會被Group的攔截掉,所以就沒有效了。
但是當我們針對單個View 設置INVISIBLE是有效果的,並不會觸發這個方法,所以是可以的。
所以如果想要有效果,只需要重新寫一個Group繼承這個類,然後重寫這個方法就好了。

還有一個需要注意的是:因爲一個Group可以設置多個子View,那麼當多個Group設置同一個View後,被控制的那個子View會最後一個設置的Group控制。前面的Group不再控制那個子View.
總結:在子控件ID被設置ID後,Gone沒有效果,INVISIBLE不影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章