鴻蒙智慧屏之PositionLayout常見使用方法演示
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz
PositionLayout簡介
PositionLayout意為確切位置布局,我們也可以稱為絕對布局,該布局指定了子組件在其中的具體位置(x/y坐標(biāo))。由于需要指定子組件的x/y精確坐標(biāo),其布局的靈活性較差,在沒有絕對定位的情況下相比其他類型的布局更加難以維護(hù),因此不建議使用。
常用屬性及示例
PositionLayout是以setContentPosition(float x, float y)方法來設(shè)置子組件的具體位置,x為組件左上角距離父組件左邊距的距離,y為組件左上角距離父組件上邊距的距離。我們在XML中定義好布局和組件,先不設(shè)置其具體位置。
- <?xml version="1.0" encoding="utf-8"?>
- <PositionLayout
- xmlns:ohos="http://schemas.huawei.com/res/ohos"
- ohos:height="match_parent"
- ohos:width="match_parent">
- <Text
- ohos:id="$+id:txtOne"
- ohos:height="match_content"
- ohos:width="match_content"
- ohos:text="Text One"
- ohos:padding="20vp"
- ohos:background_element="$graphic:background_text_global"/>
- <Text
- ohos:id="$+id:txtTwo"
- ohos:height="match_content"
- ohos:width="match_content"
- ohos:text="Text Two"
- ohos:padding="20vp"
- ohos:background_element="$graphic:background_text_global"/>
- <Text
- ohos:id="$+id:txtThree"
- ohos:height="match_content"
- ohos:width="match_content"
- ohos:text="Text Three"
- ohos:padding="20vp"
- ohos:background_element="$graphic:background_text_global"/>
- </PositionLayout>
從XML定義來看,我們是使用了三個(gè)Text顯示組件,運(yùn)行后模擬器界面應(yīng)該也是三個(gè)組件,但實(shí)際效果呢?我們發(fā)現(xiàn)三個(gè)組件重疊在一起,第三個(gè)顯示在最上邊。若你想看看其他兩個(gè)組件,你可以把他們的寬高設(shè)置成不一樣的值,第一個(gè)組件的寬高最大,第二個(gè)相對第一個(gè)組件小點(diǎn),第三個(gè)組件相對第二個(gè)小點(diǎn),然后給他們不同的背景色,這樣你就可以看出三個(gè)組件重疊在一起的效果。
接下來我們給三個(gè)組件不同的位置(x/y值)。在XML中如何設(shè)置還未看明白,目前只能先在Java代碼中做控制。
- super.setUIContent(ResourceTable.Layout_position_layout);
- Text text_one = (Text) findComponentById(ResourceTable.Id_txtOne);
- Text text_two = (Text) findComponentById(ResourceTable.Id_txtTwo);
- Text text_three = (Text) findComponentById(ResourceTable.Id_txtThree);
- text_one.setContentPosition(100, 100);
- text_two.setContentPosition(200, 200);
- text_three.setContentPosition(300, 300);
PositionLayout布局可以控制組件的具體位置,這種布局我們一般在什么情況下使用呢?比如我們登陸頁面使用的是一張圖片,在這個(gè)圖片上我們定義好了用戶名、密碼的輸入框,我們就可以使用這種布局來把兩個(gè)組件顯示在特定的位置,一般不建議使用這種布局,局限性太強(qiáng),適配性太差。
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz