iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0

還記得XML裡的各種屬性嗎?
設定長寬

android:layout_width="fill_parent" 
android:layout_height="wrap_content" 

設定可見性

android:visibility="visible"

設定顏色

android:background="#FFB6C1"

許多的屬性都需要在XML上做設置
而來到的Compose,這份工作交給了修飾符 - Modifier
雖然有些組件有自己的參數或設定方式
不過大部分的屬性交給Modifier設定就可以了
那我們來看看範例吧
以下範例皆是參考自Android Developer官網
先來個最常見的padding

@Composable
private fun Greeting(name: String) {
  Column(modifier = Modifier.padding(24.dp)) {
    Text(text = "Hello,")
    Text(text = name)
  }
}


可以看到周圍加了一圈的邊距

也可以把Modifier的各個函數連在一起

@Composable
private fun Greeting(name: String) {
  Column(modifier = Modifier
    .padding(24.dp)
    .fillMaxWidth()
  ) {
    Text(text = "Hello,")
    Text(text = name)
  }
}

而且要注意一點,Modifier的順序非常重要
不同的順序會產生不同的效果

@Composable
fun ArtistCard(/*...*/) {
    val padding = 16.dp
    Column(
        Modifier
            .clickable(onClick = onClick)
            .padding(padding)
            .fillMaxWidth()
    ) {
        // rest of the implementation
    }
}


因為padding放在了clickable之後
所以整個Column都是可以點擊的

那如果我們調換順序

@Composable
fun ArtistCard(/*...*/) {
    val padding = 16.dp
    Column(
        Modifier
            .padding(padding)
            .clickable(onClick = onClick)
            .fillMaxWidth()
    ) {
        // rest of the implementation
    }
}


點擊區域就只會剩下padding內部區域

底下列出一些常見的屬性(未完待續

XML Compose
android:layout_width="wrap_content" Modifier.wrapContentWidth()
android:layout_height="fill_parent" Modifier.fillMaxHeight()
android:onClick Modifier.clickable { }
android:background Modifier.background()
android:visibility="visible" Modifier.alpha(1f)

參考資料:
https://developer.android.com/jetpack/compose/modifiers


上一篇
5. XML to Compose:初探Compose,掙脫樣板代碼的詛咒,這也太香了吧
下一篇
7. Compose 的 LinearLayout:Column & Row
系列文
Jetpack Compose 輕易入門 :無障礙的開箱即用8
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言