android關於LinearLayout的坑
以前開始學的時候
我們都知道如果LinearLayout的佈局方向有兩種
1.horizontal(水平方向佈局)
2.vertical(垂直方向佈局)
如果LinearLayout的佈局方向是horizontal,內部的控制元件就絕對不能將寬度指定為match_parent,因為這樣的話,單獨一個控制元件就會將整個水平方向佔滿,其他的控制元件就沒有可以放置的位子了,同樣道理如果LinearLayout的佈局方向是vertical,內部的的控制元件就不能將高度指定為mach_parent
這段話看似很好理解,我也自以為是的很快就理解了,實則不然
今天寫程式碼突然發現一個“BUG”
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1"> </Button> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="2"> </Button> </LinearLayout>按道理說,上面的程式碼由於我的第二Button指定了layout_width="match_parent"所以只能看到第二個Button,因為第一個Button被第二個Button擠掉了
但是出來的效果卻讓我大吃一驚,如下圖
我勒個去。。。應該是以下的程式碼才會出現上圖的效果啊
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1"> </Button> <Button android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:text="2"> </Button> </LinearLayout>無奈,讓我冥思苦想一個晚上
終於開竅
第一段程式碼導致這種效果的合理解釋是
因為第一個按鈕已經佔據了一部分空間,第二個按鈕再設定layout_width="match_parent"的時候,只會擠掉排列在第二個按鈕之後的控制元件控制元件,不會擠掉之前控制元件的空間,於是,抱著這個想法我又開始新一輪的嘗試
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1"> </Button> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="2"> </Button> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3"> </Button> </LinearLayout>果不其然,上面程式碼的效果與圖1一毛一樣,看來我的推測是正確的
結論:當時LinearLayout佈局時,最後一個控制元件指定是laytout_width="match_parent"就會佔滿剩餘的所有空間,但是如果後期再想在這個所謂的“最後一個控制元件”後面再加一個控制元件,這個控制元件是不會顯示出來的,還是按照標準的寫法,把layout_width或者layout_height的值設定為“0dp”再加上layout_weight="1"的這種寫法比較保險,不要為了一時偷懶導致後患無窮
相關文章
- 關於calc的踩坑
- 【Android】設定 LinearLayout 的樣式Android
- Android UI系列-----LinearLayout的綜合使用AndroidUI
- Android角落 不妨再看LinearLayoutAndroid
- 關於Gson和FastJson的坑ASTJSON
- 關於Autolayout製作動畫的坑動畫
- 關於 ulimit 的兩個天坑MIT
- 關於Android room 時間函式條件的坑 給需要的人AndroidOOM函式
- LinearLayout.onMeasure-設定LinearLayout的高度
- Go 語言關於 Type Assertions 的 坑Go
- 關於js的冒泡--新手踩坑案例JS
- SQL 語句中關於 NULL 的那些坑SQLNull
- 填坑-關於IIC通訊
- 關於 JS 陣列,物件 length 使用的坑JS陣列物件
- 關於jqGrid+mybatisplus遇到的坑MyBatis
- 關於dispatch_once的坑及注意點
- 關於ThreadLocal變數的一個坑thread變數
- Android關於Typedarray的使用Android
- 關於passive event listener的一次踩坑
- 關於performSelector:afterDelay:的一個坑及思考performSelector
- 關於安裝black apple遇到的坑APP
- 關於Android中Animation的停止Android
- Android WebView的坑AndroidWebView
- 初學 GoLang 遇到的一個關於時間的坑...Golang
- 關於SpringBoot結合mybatis後遇到的坑Spring BootMyBatis
- 關於這一次h5踩到的坑H5
- selenium:1.關於安裝selenium的坑
- 關於QQ第三方登入的坑
- Android UI控制元件系列:LinearLayout(線性佈局)AndroidUI控制元件
- 關於Android微信支付Android
- 關於Android配色(1)Android
- 關於Android配色(2)Android
- Android關於沉浸式的個人理解Android
- Android 關於WebView的使用技巧小解AndroidWebView
- 關於Android ant build的學習AndroidUI
- 關於Python庫 pygame zero(pgzero)哪些坑PythonGAM
- 關於最近開發小程式中踩過的那些坑
- thymeleaf關於js的一些坑(陣列定義)JS陣列