在鴻蒙的DevEco-Studio中新建工程模板的控件Text屬性以下:android
ohos:id="$+id:text_helloworld" ohos:height="match_content" ohos:width="match_content" ohos:background_element="$graphic:background_ability_main" ohos:layout_alignment="horizontal_center" ohos:text="Hello World" ohos:text_size="50"
一、id(通用屬性)windows
id,控件的惟一標識。佈局
【Android】字體
@+id:android:id="@+id/名稱" 表示建立該控件的idcode
@id:android:id="@id/名稱" 表示引用其餘控件的idblog
【鴻蒙】圖片
@+id:ohos:id="$+id:名稱" 表示建立該控件的idip
@id:未出現該用法element
二、height、width(通用屬性)開發
height,佈局文件的一個屬性。
【Android】
@layout_height:android:layout_height="屬性/數值" 表示該控件的高度
@layout_width:android:layout_width="屬性/數值" 表示該控件的高度
*屬性列表:
wrap_content:是layout_width和layout_height的屬性值之一,表示和自身內容同樣的長度。
match_parent:是layout_width和layout_height的屬性值之一,表示和父組件同樣的長度。
(1)和wrap_content配合:
先按照內容的多少去設定空間大小,而後按照權重的比例分配剩餘控件。即當控件沒有內容或內容未超出按照權重比例分配的空間時,就按照layout_weight設定的權重比例分配空間,當內容大小超過這樣分配的空間時,控件就會擴張,其實就是按照wrap_content來佔用空間了,剩下的空間仍然按照本段定理來分配。
(2)和match_parent配合:
空間計算公式:空間大小=父容器大小+權重比例剩餘空間大小,好比兩個同級控件A,B都是match_parent,A的layout_weight爲1,B的layout_weight爲2(總空間爲1match_parent,所需空間爲2match_parent,剩餘空間爲二者之差),空間A=1match_parent+1/(1+2)(1match_parent-2match_parent)=2/3match_parent,同理,空間B=1/3match_parent。這個現象和正常狀況有些相反,可是能夠有效保證空間分配到的比例固定,不會被內容撐大。
(3)和0dp配合:
將layout_weight或者layout_height設爲0dp,將直接按照layout_weight權重的比例分配空間,且不會被內容撐大。
*數值列表
px、dp、dip、sp、mm、in、pt
(1)px:
即像素,1px表明屏幕上一個物理的像素點;
px單位不被建議使用,由於一樣100px的圖片,在不一樣手機上顯示的實際大小可能不一樣。
偶爾用到px的狀況,是須要畫1像素表格線或陰影線的時候,用其餘單位如dp會顯得模糊。
(2)dp: 這個是最經常使用但也最難理解的尺寸單位。它與「像素密度」密切相關,因此首先咱們解釋一下什麼是像素密度。假設有一部手機,屏幕的物理尺寸爲1.5英寸x2英寸,屏幕分辨率爲240x320,則咱們能夠計算出在這部手機的屏幕上,每英寸包含的像素點的數量爲240/1.5=160dpi(橫向)或320/2=160dpi(縱向),160dpi就是這部手機的像素密度,像素密度的單位dpi是Dots Per Inch的縮寫,即每英寸像素數量。橫向和縱向的這個值都是相同的,緣由是大部分手機屏幕使用正方形的像素點。
不一樣的手機/平板可能具備不一樣的像素密度,例如同爲4寸手機,有480x320分辨率的也有800x480分辨率的,前者的像素密度就比較低。Android系統定義了四種像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它們對應的dp到px的係數分別爲0.7五、一、1.5和2,這個係數乘以dp長度就是像素數。例如界面上有一個長度爲「80dp」的圖片,那麼它在240dpi的手機上實際顯示爲80x1.5=120px,在320dpi的手機上實際顯示爲80x2=160px。若是你拿這兩部手機放在一塊兒對比,會發現這個圖片的物理尺寸「差很少」,這就是使用dp做爲單位的效果,見下圖。
是否是全部android手機的屏幕寬度用dp衡量都是固定值(例如320dp)呢?答案是否認的,若是寫一個程序畫寬度等於320dp的橫線,在不一樣手機上運行,會發如今有些手機上橫線比手機屏幕短,有些則比屏幕長,在平板上與手機上相比差異則更加明顯。
(3)dip:
與dp徹底相同,只是名字不一樣而已。在早期的Android版本里多使用dip,後來爲了與sp統一就建議使用dp這個名字了。
(4)sp:
與縮放無關的抽象像素(Scale-independent Pixel)。sp和dp很相似但惟一的區別是,Android系統容許用戶自定義文字尺寸大小(小、正常、大、超大等等),當文字尺寸是「正常」時1sp=1dp=0.00625英寸,而當文字尺寸是「大」或「超大」時,1sp>1dp=0.00625英寸。相似咱們在windows裏調整字體尺寸之後的效果——窗口大小不變,只有文字大小改變。
(5)mm:(比較少用到)
即毫米;
(6)in:(比較少用到)
即英寸,1英寸=2.54釐米(約);
(7)pt:(比較少用到)
1pt=1/72英寸=0.035釐米;
最佳實踐,文字的尺寸一概用sp單位,非文字的尺寸一概使用dp單位。例如textSize="16sp"、layout_width="60dp";偶爾須要使用px單位,例如須要在屏幕上畫一條細的分隔線時:
layout_width="match_parent" layout_height="1px"
【鴻蒙】
@height:ohos:height="屬性/數值" 表示該控件的高度
@width:ohos:width="屬性/數值" 表示該控件的高度
*屬性列表:
match_content:是width和height的屬性值之一,表示和自身內容同樣的長度。
match_parent:是width和height的屬性值之一,表示和父組件同樣的長度。
*數值列表(目前尚未找到文檔介紹,待後續更新):
fp、px、vp
本文由博客一文多發平臺 OpenWrite 發佈!