如何在Jetpack Compose中处理文本的可见性?

时间:2020-10-14 23:24:43

标签: android android-jetpack-compose

我有此文字:

Text(
    text = stringResource(id = R.string.hello)
)

如何显示和隐藏此组件?

我正在使用Jetpack Compose版本'1.0.0-alpha03'

3 个答案:

答案 0 :(得分:4)

正如CommonsWare所述,将compose作为一个声明性工具箱,您可以将组件绑定到状态(例如:isVisible),然后compose会智能地确定哪些组合物依赖于该状态并重新组合它们。例如:

@Composable
fun MyText(isVisible: Boolean){
  if(isVisible){
     Text(text = stringResource(id = R.string.hello))
  }
}

您还可以将AnimatedVisibility()组合用于动画。

答案 1 :(得分:2)

如上所述,您可以使用AnimatedVisibility,例如:

AnimatedVisibility(visible = yourCondition) { Text(text = getString(R.string.yourString)) }

答案 2 :(得分:0)

使用 1.0.0-beta06,您可以简单地添加如下条件:

  if(isVisible){
     Text("....")
  }

类似于:

var visible by remember { mutableStateOf(true) }
Column() {
    Text("Text")
    Button(onClick = { visible = !visible }) { Text("Toggle") }
}

如果您想为其内容的出现和消失设置动画,您可以使用 AnimatedVisibility

var visible by remember { mutableStateOf(true) }
Column() {
    AnimatedVisibility(
        visible = visible,
        enter = fadeIn(
            // Overwrites the initial value of alpha to 0.4f for fade in, 0 by default
            initialAlpha = 0.4f
        ),
        exit = fadeOut(
            // Overwrites the default animation with tween
            animationSpec = tween(durationMillis = 250)
        )
    ) {
        // Content that needs to appear/disappear goes here:
        Text("....")
    }
    Button(onClick = { visible = !visible }) { Text("Toggle") }
}