如何使用jetpack compose创建圆形轮廓按钮

Gab*_*tti 7 android android-button android-jetpack-compose android-compose-button

我正在尝试创建一个圆形OutlinedButton,中间有一个图标,没有文字。

    OutlinedButton(onClick = { /*TODO*/ },
        shape = CircleShape,
        border= BorderStroke(1.dp, Color.Blue)
    ) {
        Icon(Icons.Default.Add, contentDescription = "content description")
    }
Run Code Online (Sandbox Code Playgroud)

最后一个按钮是椭圆形的:

在此处输入图片说明

使用IconButton

    IconButton(onClick = {  },
        modifier = Modifier
            .clip(CircleShape)
            .border(1.dp, Color.Red)
    ) {
        Icon(Icons.Default.Add, contentDescription = "content description",tint = Color.Red)
    }
Run Code Online (Sandbox Code Playgroud)

这是最终结果:

在此处输入图片说明

Gab*_*tti 15

有了1.0.x你可以使用OutlinedButton
就像是:

    OutlinedButton(onClick = { /*TODO*/ },
        modifier= Modifier.size(50.dp),  //avoid the oval shape
        shape = CircleShape,
        border= BorderStroke(1.dp, Color.Blue),
        contentPadding = PaddingValues(0.dp),  //avoid the little icon
        colors = ButtonDefaults.outlinedButtonColors(contentColor =  Color.Blue)
    ) {
         Icon(Icons.Default.Add, contentDescription = "content description")
    }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

IconButton删除clip修饰符并使用shape内部border参数:

    IconButton(onClick = {  },
          modifier = Modifier
              .then(Modifier.size(50.dp))
              .border(1.dp, Color.Red, shape = CircleShape)
              ) {
        Icon(Icons.Default.Add, contentDescription = "content description", tint = Color.Red)
    }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明