日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android:Layout_weight的深刻理解

發布時間:2024/4/13 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android:Layout_weight的深刻理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文詳細介紹了Android布局中Layout_weight的屬性,它是用來分配屬于空間的一個屬性,你可以設置他的權重。

AD:

最近寫Demo,突然發現了Layout_weight這個屬性,發現網上有很多關于這個屬性的有意思的討論,可是找了好多資料都沒有找到一個能夠說的清楚的,于是自己結合網上資料研究了一下,終于迎刃而解,寫出來和大家分享。

首先看一下Layout_weight屬性的作用:它是用來分配屬于空間的一個屬性,你可以設置他的權重。很多人不知道剩余空間是個什么概念,下面我先來說說剩余空間。

看下面代碼:

  • <?xml?version="1.0"?encoding="utf-8"?>?????
  • <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"?????
  • ????android:orientation="vertical"?????
  • ????android:layout_width="fill_parent"?????
  • ????android:layout_height="fill_parent"?????
  • ????>?????
  • <EditText?????
  • ????android:layout_width="fill_parent"?????
  • ????android:layout_height="wrap_content"?????
  • ????android:gravity="left"?????
  • ????android:text="one"/>?????
  • <EditText?????
  • ????android:layout_width="fill_parent"?????
  • ????android:layout_height="wrap_content"?????
  • ????android:gravity="center"?????
  • ????android:layout_weight="1.0"?????
  • ????android:text="two"/>?????
  • ????<EditText?????
  • ????android:layout_width="fill_parent"?????
  • ????android:layout_height="wrap_content"?????
  • ????android:gravity="right"?????
  • ????android:text="three"/>?????
  • </LinearLayout>?????
  • 運行結果是:

    看上面代碼:只有Button2使用了Layout_weight屬性,并賦值為了1,而Button1和Button3沒有設置Layout_weight這個屬性,根據API,可知,他們默認是0

    下面我就來講,Layout_weight這個屬性的真正的意思:Android系統先按照你設置的3個Button高度Layout_height值wrap_content,給你分配好他們3個的高度,

    然后會把剩下來的屏幕空間全部賦給Button2,因為只有他的權重值是1,這也是為什么Button2占了那么大的一塊空間。

    有了以上的理解我們就可以對網上關于Layout_weight這個屬性更讓人費解的效果有一個清晰的認識了。

    我們來看這段代碼:

  • ?<?xml?version="1.0"?encoding="UTF-8"?>???
  • <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"???
  • ????android:layout_width="fill_parent"???
  • ????android:layout_height="wrap_content"???
  • ????android:orientation="horizontal"?>???
  • ????<TextView???
  • ????????android:background="#ff0000"???
  • ????????android:layout_width="**"???
  • ????????android:layout_height="wrap_content"???
  • ????????android:text="1"???
  • ????????android:textColor="@android:color/white"???
  • ????????android:layout_weight="1"/>???
  • ????<TextView???
  • ????????android:background="#cccccc"???
  • ????????android:layout_width="**"???
  • ????????android:layout_height="wrap_content"???
  • ????????android:text="2"???
  • ????????android:textColor="@android:color/black"???
  • ????????android:layout_weight="2"?/>???
  • ?????<TextView???
  • ????????android:background="#ddaacc"???
  • ????????android:layout_width="**"???
  • ????????android:layout_height="wrap_content"???
  • ????????android:text="3"???
  • ????????android:textColor="@android:color/black"???
  • ????????android:layout_weight="3"?/>???
  • </LinearLayout>?
  • 三個文本框的都是 layout_width=wrap_content 時,會得到以下效果


    按照上面的理解,系統先給3個TextView分配他們的寬度值wrap_content(寬度足以包含他們的內容1,2,3即可),然后會把剩下來的屏幕空間按照1:2:3的比列分配給3個textview,所以就出現了上面的圖像。

    而當layout_width=fill_parent時,如果分別給三個TextView設置他們的Layout_weight122的話,就會出現下面的效果:


    你會發現1的權重小,反而分的多了,這是為什么呢???網上很多人說是當layout_width=fill_parent時,weighth值越小權重越大,優先級越高,就好像在背口訣

    一樣,其實他們并沒有真正理解這個問題,真正的原因是Layout_width="fill_parent"的原因造成的。依照上面理解我們來分析:

    系統先給3個textview分配他們所要的寬度fill_parent,也就是說每一都是填滿他的父控件,這里就死屏幕的寬度

    那么這時候的剩余空間=1個parent_width-3個parent_width=-2個parent_width (parent_width指的是屏幕寬度?)

    那么第一個TextView的實際所占寬度應該=fill_parent的寬度,即parent_width + 他所占剩余空間的權重比列1/5 * 剩余空間大小(-2 parent_width)=3/5parent_width

    同理第二個TextView的實際所占寬度=parent_width + 2/5*(-2parent_width)=1/5parent_width;

    第三個TextView的實際所占寬度=parent_width + 2/5*(-2parent_width)=1/5parent_width;所以就是3:1:1的比列顯示了。

    這樣你也就會明白為什么當你把三個Layout_weight設置為1、2、3的話,會出現下面的效果了:

    第三個直接不顯示了,為什么呢?一起來按上面方法算一下吧:

    系統先給3個textview分配他們所要的寬度fill_parent,也就是說每一都是填滿他的父控件,這里就死屏幕的寬度

    那么這時候的剩余空間=1個parent_width-3個parent_width=-2個parent_width (parent_width指的是屏幕寬度?)

    那么第一個TextView的實際所占寬度應該=fill_parent的寬度,即parent_width + 他所占剩余空間的權重比列1/6 * 剩余空間大小(-2 parent_width)=2/3parent_width

    同理第二個TextView的實際所占寬度=parent_width + 2/6*(-2parent_width)=1/3parent_width;

    第三個TextView的實際所占寬度=parent_width + 3/6*(-2parent_width)=0parent_width;所以就是2:1:0的比列顯示了。第三個就直接沒有空間了。

    【編輯推薦】

  • Android開發初學者必看文檔:Android開發規范
  • 論述Android開發新手常犯的10大錯誤
  • Android開發5個小常識:設置按鍵效果等
  • 總結

    以上是生活随笔為你收集整理的Android:Layout_weight的深刻理解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 蜜桃91丨九色丨蝌蚪91桃色 | 国产第一精品视频 | 麻豆亚洲一区 | 91视频免费视频 | 男人天堂亚洲天堂 | 开心综合网 | 欧美一级看片 | 中文字幕不卡在线观看 | 亚洲黄网在线 | 五月天久久久久 | 欧美aⅴ视频 | 一级特黄色片 | 黄色大片a级| 国产污在线观看 | 26uuu精品一区二区 | 中文字字幕一区二区三区四区五区 | 成人看片黄a免费看视频 | 在线一区二区三区四区 | 老女人性视频 | av黄色在线观看 | 伊人黄| 色狠狠一区二区三区香蕉 | 欧美色视频在线观看 | 日韩一区二区不卡 | 艳母日本动漫在线观看 | 欧美熟妇另类久久久久久不卡 | 欧美亚洲成人网 | 春宵av| 日韩欧美片 | 伊人婷婷综合 | 奇米第四色在线 | 亚洲国产一区二区在线观看 | 久久久人人人 | 美女被啪羞羞粉色视频 | 欧美色婷婷 | 成人毛片18女人毛片免费 | 男女激情大尺度做爰视频 | 男人午夜av| 国产精品suv一区二区三区 | 日本欧美国产一区二区三区 | 亚洲一区二区麻豆 | 国产熟妇另类久久久久 | 日日躁夜夜躁白天躁晚上躁91 | 国产区视频 | 男操女视频免费 | 黄色动漫在线免费观看 | 欧美综合第一页 | 日韩精品成人在线观看 | 久伊人 | 国产情侣自拍小视频 | 精品视频大全 | 超碰导航 | 久久黄色一级视频 | 中文久久久久 | 亚洲无码一区二区三区 | 成了校长的性脔h文 | 中文字幕免费中文 | 精品人妻一区二区乱码 | 六月丁香色婷婷 | 久久国内视频 | 精品少妇一区二区三区免费观看 | 色就是色网站 | 国产精品美女久久久久久久久 | 涩涩涩在线观看 | 天天干天天操av | 久久av无码精品人妻系列试探 | 久久视频在线免费观看 | 欧美精品一区二区三区四区五区 | av成人免费在线 | 我的邻居在线观看 | 色91在线| 爱情岛论坛永久入址在线 | 亚洲精品字幕在线观看 | 91尤物视频 | 老女人性视频 | 四虎伊人 | 鲁一鲁一鲁一鲁一av | 2019av视频| 高清国产在线 | 1024亚洲天堂 | 亚洲乱码精品 | 天堂免费在线视频 | 国产一区二区三区高清视频 | 国产一级免费大片 | 成人免费视频网站在线观看 | 欧洲在线视频 | 天堂av一区二区三区 | 成人午夜网站 | 欧美视频区| 日本中文字幕网 | 69av在线视频 | 午夜影院一区二区 | 4438五月天| 泰剧19禁啪啪无遮挡 | 青青操免费 | 第一章婶婶的性事 | 黄页网站在线播放 | 免费av软件| 亚洲AV蜜桃永久无码精品性色 |