如何使用 Jetpack Compose 显示在单击按钮时隐藏的 IconButton?

2024-04-17

我在我的ViewModel类,一个State对象的默认值为false.

var menuState = mutableStateOf(false)

现在我想显示IconButton根据 的值menuState:

setContent {
    Scaffold(
        topBar = {
            TopAppBar (
                title = {
                    Text(
                        text = "MyApp",
                        fontSize = 18.sp
                    )
                    if (viewModel.menuState.value) { //Condition
                        IconButton(
                            onClick = {
                                //Do stuff
                            }
                        ) {
                            Icon(
                                imageVector = Icons.Outlined.MoreVert,
                                contentDescription = null,
                            )
                        }
                    }
                }
            )
        }
    )
}

当应用程序启动时,这段代码工作正常,因为我想要IconButton被隐藏。现在,当我想在单击按钮时更改另一个可组合项的可见性时,问题就出现了:

Button(
    onClick = {
        viewModel.menuState.value = true
    }
) {
    Text(
        text = "Sign out",
        fontSize = 18.sp
    )
}

什么都没发生。这IconButton仍然隐藏。怎么解决这个问题呢?


试试这个方法:

为 TopBar 创建 Composable 方法并传递布尔参数

@Composable
fun TopBar(isVisible: Boolean) {
    TopAppBar (
        title = {
            Text(
                text = "MyApp",
                fontSize = 18.sp
            )
            if (isVisible) { //Condition
                IconButton(
                    onClick = {
                        //Do stuff
                    }
                ) {
                    Icon(
                        imageVector = Icons.Outlined.MoreVert,
                        contentDescription = null,
                    )
                }
            }
        }
    )
}

之后调用这个方法:

setContent {
    Scaffold(
        topBar =  TopBar(viewModel.menuState.value)       }
    )
}
   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Jetpack Compose 显示在单击按钮时隐藏的 IconButton? 的相关文章

  • 安卓卸载通知

    当用户卸载应用程序时有什么方法可以发送通知 如果用户卸载该应用程序 应用程序所有者应该收到以下用户已卸载该应用程序的通知 是否可以 应用程序本身不可能 除非有来自同一作者的其他应用程序可以检查 但我认为有一个可用但复杂的解决方法 应用程序可
  • 工具栏下方的白条

    所以我有一个带有工具栏的应用程序 工具栏下方出现一个白条 最后的屏幕截图 我不希望那个栏在那里我尝试添加 maxHeight 以查看它是否有效 但没有运气 这是我的样式和 v21 style xml style
  • 如何从命令行向 Android 项目添加外部 jar 库

    我正在尝试构建一个具有一些依赖项的 Android 项目 jar 文件位于 lib 目录中 我可以通过将这些 jar 文件添加到我的类路径来构建项目 但当然它会在模拟器中强制关闭 因为这些库不存在 我正在使用 ant 从命令行执行此操作 n
  • 在Android市场发布测试版

    我想要publish a 测试版我在 Android 市场上的一些应用程序 面临着我无法两次上传具有相同包名的应用程序的问题 即使使用不同的证书也是如此 但是发布版和测试版有 2 个包名会带来很多麻烦 例如每次都必须更改对 R 不同位置的引
  • 动态添加导航抽屉中的项目

    我创建了抽屉 但是我想动态设置抽屉的项目列表 意味着从数据库获取数据并设置为抽屉列表 是否可以 是的 比如何 我也知道静态抽屉 尝试这个 final Menu menu navigationView getMenu for int i 1
  • 当应用程序崩溃时,Android Studio ADB 会清除 logcat 文件!哦美伊

    刚刚升级了最新的Android Studio 现在 当应用程序崩溃时 日志文件 adb logcat 就会消失 它不仅停止记录整个日志似乎突然被删除了 对于调试来说不太酷 我需要设置日志缓存大小或其他什么吗 还注意到调试器需要很长时间来收集
  • android setOnLongClickListner 不适用于 onTouch 事件

    我有一个可拖动和缩放的图像视图 但现在我还需要将 setOnLongClickListner 放在我的图像视图上 我已经这样做了 但它不起作用 但是当我禁用 ontouch 事件时它开始工作 谁能告诉我如何解决这个问题 这是我的代码 ima
  • 无法在活动和远程服务之间共享 SharedPreferences - Android 错误或功能?

    我想在 SharedPreferences 更改时更新远程服务 以下内容用于 API 级别 8 Android 2 2 我的活动有一个OnPreferencesChangedListener它通过服务绑定器对象调用远程服务 远程服务的接口提
  • 从片段调用片段

    我想通过单击当前片段中的按钮来调用当前片段中的另一个片段 这是我的主要活动 import android app FragmentManager import android os Bundle import android support
  • 此版本的渲染库比您的 ADT 插件版本更新。请更新ADT插件 - 已经更新

    在 Eclipse 上 尽管我使用的是最新的 adt 版本 但我收到此错误 我不确定它是否相关 但这发生在我安装 android m sdk 之后 从这里 https stackoverflow com a 30535515 933050
  • 围绕右下角对齐图像

    我正在使用相对布局将一个较小的图像叠加在较大的图像之上 我希望较小图像的右下角与较大图像的 B R 角重合 我在布局 XML 中使用边距参数 指定倾斜测量 但这似乎不适用于所有设备和分辨率 在某些情况下 小图像会从边框移动 4 5 像素 是
  • 检测已退款的托管应用内购买 android IAP 2.0.3

    我无法弄清楚如何使用 Android 检测何时为托管 不可消费 应用内产品发放退款com android billingclient billing 2 0 3 这个问题似乎相当深 尽管我可能让它变得比应有的更复杂 首先 我进行了一次测试购
  • Android sqlite插入记录如果不存在

    我想将一个新项目 Cheese 添加到 sqlite 表中 但前提是它不存在 我的表中只有两列 id KEY ROWID PR 和product name KEY NAME PR 我一直在尝试使用这些代码 但它给了我一个错误 public
  • 如何从github项目获取jar? [复制]

    这个问题在这里已经有答案了 我想使用官方网站上的 kSoap2 android 库http simpligility github io ksoap2 android index html http simpligility github
  • 如何单击 TableLayout 中的特定 TableRow

    我制作了自己的复合控件 该控件使用 TableLayout 显示数据网格 并根据绑定到它的对象数组以编程方式在循环内添加 Tablerows 现在我想选择具有特定数据的特定行 以便由一个方法 那么我如何选择检索其数据的特定行来委托方法呢 你
  • 如何在Android模拟器中找到数据库文件的路径?

    我正在 Android 模拟器中执行一些 sqlite 查询 我想知道数据库文件存储在哪个路径 请给我一些如何找到它的想法 如果你能给我一些代码片段 乌尔 s 库马兰 数据库通常存储在 data data your applications
  • 从 kotlin 多平台项目创建 fat jar

    我最近从旧的 1 2 多平台切换到 1 3 不同之处在于 每个多平台模块都有一个 build gradle 文件 我有 5 个 因此配置少了很多 但是 我似乎无法配置使用 jvm 平台的所有依赖项创建可运行的 fat jar 我曾经在 jv
  • 总小时数无法从 Android 插入 MySQL

    我使用以下公式获得总小时数 public void updateTotalHours int a SplitTime objMyCustomBaseAdapter getFistTime int b SplitTime objMyCusto
  • 如何在react-native应用程序中禁用屏幕截图?

    我已经使用react native制作了一个移动应用程序 目前只有android 它不是博览会应用程序 我想禁止用户在应用程序打开时截取屏幕截图 我知道不可能完全禁用此功能 但我想让至少更难截取屏幕截图 我找到了一些例子 但我不知道如何实现
  • Kotlin 构造函数(主构造函数)

    我有一个关于 Kotlin 构造函数的问题 class abc constructor a Int constructor a Int e Int class def a Int constructor a Int e Int this a

随机推荐