ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

compose 基础

2021-08-01 13:35:55  阅读:157  来源: 互联网

标签:compose 函数 color 基础 Surface content Composable Unit


  • 确保您选择的最小sdkversion至少是API级别21,这是Compose支持的最小API。

  • @Composable
    fun Greeting(name: String) {
        Surface(color = Color.Yellow) {
            Text (text = "Hello $name!")
        }
    }

    The components nested inside Surface will be drawn on top of that background color (unless specified otherwise by another Surface).

  • @Composable注释只需用在 绘制UI 和调用其他@Composable绘制UI的函数上
  • 注意MainActivity中的可组合函数,在MainActivity类之外,声明为顶级函数(top level function)。Activity之外的代码越多,可以共享和重用的代码就越多。
  • 您可以将UI组件提取到@Composable function中,这样就可以重用(reuse)它们,而无需复制代码
  • To place items in a vertical sequence, use the Column Composable function (similar to a vertical LinearLayout)
    
    Divider is a provided composable function that creates a horizontal divider.(一条水平分割线)
    
    @Composable
    fun MyScreenContent() {
        Column {
            Greeting("Android")
            Divider(color = Color.Black)
            Greeting("there")
        }
    }

     

 

创建可通用的composable函数:

要创建泛型容器,请创建一个可组合函数,该函数以返回Unit的可组合函数(这里称为content)作为参数。您可能已经注意到,之所以返回Unit,是因为可组合函数不会返回UI组件,而是发出(emit)它们。这就是为什么他们必须返回Unit

@Composable
fun MyApp(content: @Composable () -> Unit) {
    BasicsCodelabTheme {
        Surface(color = Color.Yellow) {
            content()
        }
    }
}

在函数中,您定义了希望容器提供的所有共享配置,然后调用传递的子组件Composable。

利用kotlin语法中的尾随lambda, 我们可以这样使用:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApp {
                Greeting("Android")
            }
        }
    }
}

@Composable
fun MyApp(content: @Composable () -> Unit) {
    BasicsCodelabTheme {
        Surface(color = Color.Yellow) {
            content()
        }
    }
}

 

标签:compose,函数,color,基础,Surface,content,Composable,Unit
来源: https://www.cnblogs.com/--here--gold--you--want/p/15084876.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有