水平 LinearLayout 包含兩個子 LinearLayout,權重分別 0.55 與 0.45。將權重 0.45 的子佈局設為 GONE 後,另一個子佈局佔滿全螢幕。
layout_weight 分配的是剩餘空間。VISIBLE/INVISIBLE:佔據佈局空間,參與權重分配。GONE:完全移出佈局流,不佔空間,不參與權重計算。當一個子 View 設為 GONE,系統視同其不存在,剩餘空間 100% 分配給另一個有權重的 View,故其撐滿父容器。
| 屬性值 | 佔據空間 | 參與權重分配 | 可見性 |
|---|---|---|---|
| VISIBLE | 是 | 是 | 可見 |
| INVISIBLE | 是 | 是 | 不可見 |
| GONE | 否 | 否 | 不可見 |
INVISIBLE。animateLayoutChanges="true" 實現平滑過渡。android:baselineAligned="false" 提升效能。<LinearLayout
android:orientation="horizontal"
android:baselineAligned="false"
... >
<LinearLayout
android:layout_width="0dp"
android:layout_weight="0.55"
... />
<ImageView ... /> <!-- 分隔線 -->
<LinearLayout
android:id="@+id/layout_music"
android:layout_width="0dp"
android:layout_weight="0.45"
android:visibility="gone"
... />
</LinearLayout>