android - 在撰写中禁用横向模式

标签 android android-jetpack-compose

如何禁用可组合功能的横向模式?我想始终以纵向模式显示可组合。
PS:无法在 Activity 的 list 文件中设置它,因为我希望这种行为仅适​​用于一个可组合的而不是 Activity 中的其他人。

最佳答案

您可以使用 DisposableEffect + Activity requestedOrientation .

@Composable
fun LockScreenOrientation(orientation: Int) {
    val context = LocalContext.current
    DisposableEffect(Unit) {
        val activity = context.findActivity() ?: return@DisposableEffect onDispose {}
        val originalOrientation = activity.requestedOrientation
        activity.requestedOrientation = orientation
        onDispose {
            // restore original orientation when view disappears
            activity.requestedOrientation = originalOrientation
        }
    }
}

fun Context.findActivity(): Activity? = when (this) {
    is Activity -> this
    is ContextWrapper -> baseContext.findActivity()
    else -> null
}
用法:
@Composable
fun Screen() {
    LockScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
}

关于android - 在撰写中禁用横向模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69079267/

相关文章:

java - 使用 HttpURLConnection 的 Android 分段文件上传 - 400 错误请求错误

kotlin - 修改器的属性是什么,我需要更改以使角变圆且宽度更小?喷气背包组合

android - 为什么在 Jetpack Compose 中多次调用此函数?

android - 如何更新可组合函数内的 RecyclerView 的数据?

android - EditText 表单的文本格式

android - python ,猴跑者。如何在所有列表包中找到包名?

android - 如何在 Jetpack Compose 中对齐来自不同行的两个文本

viewmodel - Jetpack Compose 在 ViewModel 中观察 mutableStateOf

java - 单击项目时 fragment Activity 崩溃

java - 如何在函数内修改var值?