HarmonyOS Java UI之DirectionalLayout布局

在之前的章節(jié)中我使用的是Java 代碼構(gòu)建UI界面,從本節(jié)開始殉挽,將使用XML構(gòu)建UI界面箱锐。

使用XML構(gòu)建UI(默認(rèn)你已經(jīng)會(huì)在項(xiàng)目中創(chuàng)建XML布局文件)界面相對(duì)Java代碼構(gòu)建的好處是:結(jié)構(gòu)清晰误甚,代碼簡(jiǎn)潔宪萄。

DirectionalLayout(單一方向排列布局)是Java UI的一種重要的組件布局,用于將一組組件按照水平或垂直方向排布屎债,能夠方便地對(duì)齊布局內(nèi)的組件仅政。與Android中的線性布局相似∨杈裕可以通過設(shè)置orientation屬性來控制組件的排列方式圆丹,默認(rèn)為垂直排列。

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
                   ohos:width="match_parent"
                   ohos:height="match_parent"
                   ohos:background_element="#FFCCCCCC"
                   ohos:orientation="vertical">
    <Text
        ohos:id="$+id:txtOne"
        ohos:width="match_content"
        ohos:height="match_content"
        ohos:padding="20vp"
        ohos:margin="20vp"
        ohos:text_size="30vp"
        ohos:text_color="#FFFFFFFF"
        ohos:background_element="#FFFF00FF"
        ohos:text="我是第一個(gè)"/>

    <Text
        ohos:id="$+id:txtTwo"
        ohos:width="match_content"
        ohos:height="match_content"
        ohos:padding="20vp"
        ohos:margin="20vp"
        ohos:text_size="30vp"
        ohos:text_color="#FFFFFFFF"
        ohos:background_element="#FFFF00FF"
        ohos:text="我是第二個(gè)"/>

    <Text
        ohos:id="$+id:txtThird"
        ohos:width="match_content"
        ohos:height="match_content"
        ohos:padding="20vp"
        ohos:margin="20vp"
        ohos:text_size="30vp"
        ohos:text_color="#FFFFFFFF"
        ohos:background_element="#FFFF00FF"
        ohos:text="我是第三個(gè)"/>

</DirectionalLayout>

將上面代碼中的ohos:orientation="vertical"換成ohos:orientation="horizontal"然后運(yùn)行查看效果如下所示躯喇。


DirectionalLayout布局中的組件不會(huì)自動(dòng)換行辫封,會(huì)按照設(shè)定的方向依次排列,若超出布局本身大小玖瘸,超出布局大小的部分將不會(huì)顯示秸讹。我們將上面示例代碼中的Text組件寬度設(shè)定為400vp檀咙,然后運(yùn)行效果如下所示雅倒,我們可以看到,第三個(gè)Text組件顯示了一部分弧可。

DirectionalLayout中的組件使用layout_alignment控制自身在布局中的對(duì)齊方式蔑匣,當(dāng)對(duì)齊方式與排列方式一致時(shí),對(duì)齊方式不會(huì)生效棕诵,如布局為水平方法排列裁良,則其下組件左對(duì)齊、右對(duì)齊將不會(huì)生效校套。因?yàn)椴季种锌梢郧短撞季謥碡S富UI樣式价脾,我們可以使用這個(gè)方式來演示一下對(duì)齊樣式。

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
                   ohos:width="match_parent"
                   ohos:height="match_parent"
                   ohos:orientation="vertical">
    <DirectionalLayout
            ohos:width="match_parent"
            ohos:height="0vp"
            ohos:weight="2"
            ohos:margin="10vp"
            ohos:background_element="#FFDDDDDD"
            ohos:orientation="vertical">
        <Text
                ohos:width="match_content"
                ohos:height="match_content"
                ohos:padding="10vp"
                ohos:margin="10vp"
                ohos:text_size="20vp"
                ohos:text_color="#FFFFFFFF"
                ohos:layout_alignment="left"
                ohos:background_element="#FFFF00FF"
                ohos:text="左對(duì)齊"/>

        <Text
                ohos:width="match_content"
                ohos:height="match_content"
                ohos:padding="10vp"
                ohos:margin="10vp"
                ohos:text_size="20vp"
                ohos:text_color="#FFFFFFFF"
                ohos:layout_alignment="horizontal_center"
                ohos:background_element="#FFFF00FF"
                ohos:text="水平方向居中"/>

        <Text
                ohos:width="match_content"
                ohos:height="match_content"
                ohos:padding="10vp"
                ohos:margin="10vp"
                ohos:text_size="20vp"
                ohos:text_color="#FFFFFFFF"
                ohos:layout_alignment="right"
                ohos:background_element="#FFFF00FF"
                ohos:text="右對(duì)齊"/>
        <Text
                ohos:width="match_content"
                ohos:height="match_content"
                ohos:padding="10vp"
                ohos:margin="10vp"
                ohos:text_size="20vp"
                ohos:text_color="#FFFFFFFF"
                ohos:layout_alignment="center"
                ohos:background_element="#FFFF00FF"
                ohos:text="垂直與水平方向都居中"/>
    </DirectionalLayout>
    <DirectionalLayout
            ohos:width="match_parent"
            ohos:height="0vp"
            ohos:margin="10vp"
            ohos:weight="1"
            ohos:background_element="#FFCCCCCC"
            ohos:orientation="horizontal">
        <Text
                ohos:width="match_content"
                ohos:height="match_content"
                ohos:padding="10vp"
                ohos:margin="10vp"
                ohos:text_size="20vp"
                ohos:text_color="#FFFFFFFF"
                ohos:layout_alignment="top"
                ohos:background_element="#FFFF00FF"
                ohos:text="頂部對(duì)齊"/>

        <Text
                ohos:width="match_content"
                ohos:height="match_content"
                ohos:padding="10vp"
                ohos:margin="10vp"
                ohos:text_size="20vp"
                ohos:text_color="#FFFFFFFF"
                ohos:layout_alignment="vertical_center"
                ohos:background_element="#FFFF00FF"
                ohos:text="垂直方向居中"/>

        <Text
                ohos:width="match_content"
                ohos:height="match_content"
                ohos:padding="10vp"
                ohos:margin="10vp"
                ohos:text_size="20vp"
                ohos:text_color="#FFFFFFFF"
                ohos:layout_alignment="bottom"
                ohos:background_element="#FFFF00FF"
                ohos:text="底部對(duì)齊"/>
        <Text
                ohos:width="match_content"
                ohos:height="match_content"
                ohos:padding="10vp"
                ohos:margin="10vp"
                ohos:text_size="20vp"
                ohos:text_color="#FFFFFFFF"
                ohos:layout_alignment="center"
                ohos:background_element="#FFFF00FF"
                ohos:text="垂直與水平方向都居中"/>
    </DirectionalLayout>
</DirectionalLayout>


在上面代碼中我們看到兩個(gè)DirectionalLayout子布局中有ohos:weight="1"屬性笛匙,這個(gè)屬性就是設(shè)置組件在布局中的權(quán)重侨把,按照比例來分配組件占用父組件的大小犀变。

DirectionalLayout布局需要掌握的知識(shí)點(diǎn)也就這么多,接下來再說說題外話秋柄。

設(shè)置UI顯示界面問題

我們使用XML方式構(gòu)建UI获枝,在AbilitySlice中設(shè)置界面入口的時(shí)候,一般會(huì)報(bào)錯(cuò)骇笔,找不到布局文件省店。官方推薦使用Build -> Build App(s)/Hap(s) > Build Debug Hap(s)重新編譯一次即可。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末笨触,一起剝皮案震驚了整個(gè)濱河市懦傍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芦劣,老刑警劉巖谎脯,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異持寄,居然都是意外死亡源梭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門稍味,熙熙樓的掌柜王于貴愁眉苦臉地迎上來废麻,“玉大人,你說我怎么就攤上這事模庐≈蚶ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵掂碱,是天一觀的道長(zhǎng)怜姿。 經(jīng)常有香客問我,道長(zhǎng)疼燥,這世上最難降的妖魔是什么沧卢? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮醉者,結(jié)果婚禮上但狭,老公的妹妹穿的比我還像新娘。我一直安慰自己撬即,他們只是感情好立磁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著剥槐,像睡著了一般唱歧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粒竖,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天颅崩,我揣著相機(jī)與錄音绍刮,去河邊找鬼。 笑死挨摸,一個(gè)胖子當(dāng)著我的面吹牛孩革,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播得运,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼膝蜈,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了熔掺?” 一聲冷哼從身側(cè)響起饱搏,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎置逻,沒想到半個(gè)月后推沸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡券坞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年鬓催,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恨锚。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宇驾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猴伶,到底是詐尸還是另有隱情课舍,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布他挎,位于F島的核電站筝尾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏办桨。R本人自食惡果不足惜筹淫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望崔挖。 院中可真熱鬧贸街,春花似錦、人聲如沸狸相。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)脓鹃。三九已至,卻和暖如春古沥,著一層夾襖步出監(jiān)牢的瞬間瘸右,已是汗流浹背娇跟。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留太颤,地道東北人苞俘。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像龄章,于是被迫代替她去往敵國(guó)和親吃谣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容