Jetpack Compose實現(xiàn)基礎(chǔ)布局Flex對比ConstraintLayout

實現(xiàn)此布局


image.png

分析:
1.布局整體方式為左右布局歪泳,左側(cè)圖片 右側(cè)文字 Row萝勤。

  1. 右側(cè)文本 為上下布局,布局第一層為左右布局呐伞,兩個文本分別在ui的左右兩端敌卓。Column 嵌套 Row 和Text。

3.布局整體為圓角伶氢,Image為圓形 趟径。
參考代碼:

@Preview
@Composable
fun FlexItem() {
    Row(
        modifier = Modifier
            .padding(top = 5.dp, bottom = 5.dp)
            .clip(RoundedCornerShape(5.dp))
            .background(color = Color.White)
            .clickable { }
            .padding(10.dp)
            .fillMaxWidth()
            .wrapContentHeight()
    ) {
        Image(
            painter = painterResource(id = R.mipmap.dog),
            contentDescription = null,
            contentScale = ContentScale.FillBounds,
            modifier = Modifier
                .clip(RoundedCornerShape(50))
                .width(80.dp)
                .height(80.dp)
        )
        Column(Modifier.padding(start = 10.dp)) {
            Row(
                verticalAlignment = Alignment.CenterVertically,
                horizontalArrangement = Arrangement.SpaceBetween,
                modifier = Modifier.fillMaxWidth()
            ) {
                Text(text = "周杰倫", fontSize = 18.sp, fontWeight = FontWeight.Bold)
                Text(text = "未發(fā)行", fontSize = 16.sp, fontWeight = FontWeight.Bold, color = Color.Blue)
            }
            Text(text = "今天發(fā)新專輯啦", modifier = Modifier.padding(top = 10.dp), color = Color.Gray)
            Text(text = "2022年01月24日15:18:33", modifier = Modifier.padding(top = 10.dp), color = Color.LightGray)
        }
    }
}

對比 ConstraintLayout 布局方式為

@ExperimentalComposeUiApi
@Composable
fun ConstraintLayoutItem(item: Int) {
    ConstraintLayout(
        modifier = Modifier
            .padding(top = 5.dp, bottom = 5.dp)
            .clickable { }
            .fillMaxWidth()
            .clip(RoundedCornerShape(5.dp))
            .background(color = Color.White)
            .padding(10.dp)
            .wrapContentHeight()
//            .border(border = BorderStroke(width = 1.dp, color = Color.Green), shape = RoundedCornerShape(5.dp))
    ) {
        val (img_header, tv_name, tv_content, tv_date, tv_status) = createRefs()
        Image(
            painter = painterResource(id = R.mipmap.dog),
            contentDescription = null,
            contentScale = ContentScale.FillBounds,
            modifier = Modifier
                .constrainAs(img_header) {
                    top.linkTo(parent.top)
                    start.linkTo(parent.start)
                }
                .height(80.dp)
                .width(80.dp)
                .clip(shape = RoundedCornerShape(50))
        )
        Text(text = "周杰倫${item}", modifier = Modifier
            .constrainAs(tv_name) {
                top.linkTo(img_header.top)
                start.linkTo(img_header.end)
            }
            .padding(start = 10.dp),
            fontWeight = FontWeight.Bold,
            fontSize = 18.sp)

        Text(
            text = "今天發(fā)新專輯啦",
            modifier = Modifier
                .constrainAs(tv_content) {
                    top.linkTo(tv_name.bottom)
                    start.linkTo(img_header.end)
                }
                .padding(start = 10.dp, top = 10.dp), style = TextStyle(color = Color.Gray))

        Text(
            text = "2022年01月24日11:55:51", modifier = Modifier
                .constrainAs(tv_date) {
                    top.linkTo(tv_content.bottom)
                    start.linkTo(tv_content.start)

                }
                .padding(start = 10.dp, top = 10.dp), style = TextStyle(color = Color.LightGray)
        )
        Text(
            text = "已發(fā)行", modifier = Modifier.constrainAs(tv_status) {
                top.linkTo(tv_name.top)
                end.linkTo(parent.end)
            }, color = Color.Blue, fontWeight = FontWeight.Bold, fontSize = 16.sp
        )
    }
}

可以看到從代碼量來說,明顯Flex布局更少癣防,結(jié)構(gòu)也更清晰蜗巧。所以推薦Flex布局。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蕾盯,一起剝皮案震驚了整個濱河市幕屹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌级遭,老刑警劉巖望拖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挫鸽,居然都是意外死亡说敏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門丢郊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盔沫,“玉大人,你說我怎么就攤上這事蚂夕⊙肝埽” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵婿牍,是天一觀的道長侈贷。 經(jīng)常有香客問我,道長等脂,這世上最難降的妖魔是什么俏蛮? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮上遥,結(jié)果婚禮上搏屑,老公的妹妹穿的比我還像新娘。我一直安慰自己粉楚,他們只是感情好辣恋,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布亮垫。 她就那樣靜靜地躺著,像睡著了一般伟骨。 火紅的嫁衣襯著肌膚如雪饮潦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天携狭,我揣著相機(jī)與錄音继蜡,去河邊找鬼。 笑死逛腿,一個胖子當(dāng)著我的面吹牛稀并,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播单默,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碘举,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了搁廓?” 一聲冷哼從身側(cè)響起殴俱,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枚抵,沒想到半個月后线欲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡汽摹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年李丰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逼泣。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡趴泌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拉庶,到底是詐尸還是另有隱情嗜憔,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布氏仗,位于F島的核電站吉捶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏皆尔。R本人自食惡果不足惜呐舔,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慷蠕。 院中可真熱鬧珊拼,春花似錦、人聲如沸流炕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至剑辫,卻和暖如春饼问,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背揭斧。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留峻堰,地道東北人讹开。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像捐名,于是被迫代替她去往敵國和親旦万。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

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