首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android LinearLayout layout_weight 與 GONE 互動機制詳解

     編輯:程式設計綜合問答

現象

水平 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>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved