标签: android-compose-button

Jetpack Compose:如何禁用 FloatingAction 按钮?

根据文档null,我们可以通过设置来禁用 FAB onClick

onClick - 当用户单击此 FAB 时将被调用。当FAB为空时,FAB将被禁用。

当我尝试它时,我偶然发现该onClick参数不可为空,

fabs onclick 不能为空

那么,如何禁用FAB呢?

android kotlin floating-action-button android-jetpack-compose android-compose-button

18
推荐指数
1
解决办法
2万
查看次数

Jetpack Compose 中概述按钮的透明背景

我想创建一个按钮,其中只有文本和图标,所有背景和边框都是透明的。我创建了类似的东西:

OutlinedButton(
    colors = ButtonDefaults.buttonColors(backgroundColor = Color.Transparent),
    border = BorderStroke(0.dp, Color.Transparent),
    modifier = modifier,
    onClick = onClick
) {
    icon?.invoke()
    Text(
        text = value,
        fontSize = 12.sp
    )
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,但我丢失了默认颜色(应该是蓝色,并且我有黑色图标和文本)。如何从按钮中删除所有背景和边框但仍然具有主题颜色?

android android-jetpack-compose android-compose-button android-jetpack-compose-button

18
推荐指数
2
解决办法
1万
查看次数

如何删除文本按钮的填充?

我正在尝试删除填充,TextButton但它不起作用。

TextButton(
    onClick = {},
    modifier = Modifier.padding(0.dp)
) {
    Text(
        " ${getString(R.string.terms_and_conditions)}",
        color = MaterialTheme.colors.primary,
        fontFamily = FontFamily(Font(R.font.poppins_regular)),
        fontSize = 10.sp,
    )
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过在属性中设置height和但填充仍然存在sizeModifier

android kotlin android-jetpack-compose android-compose-button android-jetpack-compose-button

15
推荐指数
3
解决办法
8719
查看次数

如何自定义IconButton的颜色

我想自定义 IconButton 的颜色,而不是使用 TopAppBar 上设置的默认值,但在android.compose.material中没有插槽 api 来更改它。

    Scaffold(
        topBar = {
            TopAppBar(
                title = {
                    Text(text = "LayoutsCodelab")
                },
                actions = {
                    IconButton(onClick = { /* doSomething() */ }) {  // <- why it has the theme color and how to custom it.
                        Icon(Icons.Filled.Favorite)
                    }
                }
            )
        }
    )
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-compose-button

12
推荐指数
1
解决办法
7634
查看次数

Jetpack Compose 中的缩放按钮动画

我想使用 Jetpack Compose 构建这个从 AirBnB 应用程序按下的精彩按钮动画 1

不幸的是,动画/过渡 API 最近发生了变化,而且几乎没有相关的文档。有人可以帮助我找到实现此按钮按下动画的正确方法吗?

编辑 根据 @Amirhosein 的回答,我开发了一个按钮,看起来几乎与 Airbnb 的示例一模一样

代码:

@Composable
fun AnimatedButton() {
    val boxHeight = animatedFloat(initVal = 50f)
    val relBoxWidth = animatedFloat(initVal = 1.0f)
    val fontSize = animatedFloat(initVal = 16f)

    fun animateDimensions() {
        boxHeight.animateTo(45f)
        relBoxWidth.animateTo(0.95f)
       // fontSize.animateTo(14f)
    }

    fun reverseAnimation() {
        boxHeight.animateTo(50f)
        relBoxWidth.animateTo(1.0f)
        //fontSize.animateTo(16f)
    }

        Box(
        modifier = Modifier
            .height(boxHeight.value.dp)
            .fillMaxWidth(fraction = relBoxWidth.value)

            .clip(RoundedCornerShape(8.dp))
            .background(Color.Black)
            .clickable { }
            .pressIndicatorGestureFilter(
                onStart = {
                    animateDimensions()
                },
                onStop = {
                    reverseAnimation()
                },
                onCancel = { …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-compose-button

11
推荐指数
3
解决办法
1万
查看次数

Jetpack Compose 中按钮的背景颜色

Button(backgroundColor = Color.Yellow) {
       Row {
            Image(asset = image)
            Spacer(4.dp)
            Text("Button")
           }
    }
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我不能在 Button 上使用背景颜色我在 Compose Layout codelabs 上遵循了 Image() 中的 backgroundColor 和资产问题。请帮我弄清楚如何使用Buton,我还是新手

android android-button android-jetpack-compose android-compose-button

10
推荐指数
5
解决办法
7723
查看次数

带可绘制元素的 JetPack Compose 按钮

我们如何在 jetpack compose 中实现这一点

在此输入图像描述

我正在做这样的事情

Button(
    elevation = ButtonDefaults.elevation(
        defaultElevation = 0.dp,
        pressedElevation = 8.dp,
        disabledElevation = 0.dp
    ),
    onClick = { onClick },
    shape = RoundedCornerShape(28.dp),
    modifier = modifier
        .fillMaxWidth()
        .shadow(0.dp),
    contentPadding = PaddingValues(15.dp),
    colors = ButtonDefaults.buttonColors(backgroundColor = Color.White),
    border = BorderStroke(1.dp, Color.Grey)
) {
    Box(modifier = modifier.fillMaxWidth(),
        contentAlignment = Alignment.Center) {
        Icon(
            imageVector = imageVector,
            modifier = Modifier
                .size(18.dp),
            contentDescription = "drawable icons",
            tint = Color.Unspecified
        )
        Spacer(modifier = Modifier.width(10.dp))
        Text(
            text = buttonText,
            color = Color.Black,
            textAlign …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-compose-textfield android-compose-button android-jetpack-compose-button

10
推荐指数
2
解决办法
2万
查看次数

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

我正在尝试创建一个圆形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)

这是最终结果:

在此处输入图片说明

android android-button android-jetpack-compose android-compose-button

7
推荐指数
1
解决办法
1715
查看次数

如何在 Jetpack Compose 中对齐按钮内的不同元素?

我正在尝试构建以下组件,

在此输入图像描述

以下是我的代码,

Button(onClick = { /*TODO*/ }, modifier = Modifier.fillMaxWidth()) {
    Image(painter = painterResource(id = R.drawable.ic_check_circle) , contentDescription = "")
    Text(text = "John Doe", textAlign = TextAlign.Start)
    Image(painter = painterResource(id = R.drawable.ic_arrow_forward), contentDescription = "",
        alignment = Alignment.TopEnd)
}
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-compose-button android-jetpack-compose-button

6
推荐指数
2
解决办法
9148
查看次数

如何使用按钮中的重量来对齐左侧的文本和右侧的图标

我正在 Jetpack Compose 中构建一个可重用的 Button 组件,它基本上是一个Row. 该按钮的左端应有文本,右端应有图标。这可以直接像这样工作:

@Composable
fun MyButton(
    text: String,
    modifier: Modifier = Modifier
) {
    Button(
        onClick = { /* */ },
        modifier = modifier
    ) { // RowScope
        Text(
            text = text
        )
        Spacer(modifier = Modifier.width(8.dp))
        Icon(
            painter = painterResource(
                id = android.R.drawable.ic_dialog_info
            ),
            contentDescription = null
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果按钮应用固定宽度,则文本和图标将居中而不是在左/右端。

在此输入图像描述

所以我尝试添加modifier = Modifier.weight(1F)到,Text以便它填满任何额外的空间。但这会导致没有固定宽度的按钮占用尽可能多的空间。

在此输入图像描述

如何构建一个可在两种情况下工作的 Compose 组件:定义宽度时和换行到内容时?

我的屏幕布局:

@Composable
fun MyScreen() {
    Column(
        horizontalAlignment = Alignment.CenterHorizontally,
        modifier = Modifier.fillMaxSize()
    ) …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-jetpack-compose android-compose-button android-jetpack-compose-button

6
推荐指数
1
解决办法
1285
查看次数