撰写:beta08 中断可点击

时间:2021-06-12 01:34:32

标签: android android-jetpack android-jetpack-compose

我有一个可组合的卡片视图。

@Composable
fun ItemCard() {
    var isExpanded by remember { mutableStateOf(false) }
    Card(modifier = Modifier.clickable {
            isExpanded = !isExpanded
            Log.d(TAG, "Expanded set to $isExpanded")
        }) {
            // regular card segment goes here
            AnimatedVisibility (isExpanded) {
               // expanded card segment goes here
            }
    }
}

因此,我将撰写更新为 1.0.0-beta08 并且 Modifier.clickable 停止工作。

这里是依赖项:

implementation 'androidx.core:core-ktx:1.5.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.3.0'
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling:$compose_version"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
implementation 'androidx.activity:activity-compose:1.3.0-alpha08'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
implementation "androidx.navigation:navigation-compose:2.4.0-alpha01"
implementation "androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha07"
implementation 'androidx.room:room-common:2.3.0'
implementation 'androidx.room:room-ktx:2.3.0'
implementation "androidx.room:room-runtime:2.3.0"
kapt "androidx.room:room-compiler:2.3.0"
implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.32"
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9"
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9"
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")

我所做的只是将撰写从 1.0.0-beta07 更改为 1.0.0-beta08 并且(根据撰写更新的要求)将 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32" 更改为 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.10"

1 个答案:

答案 0 :(得分:4)

原因:

这是 Jetpack 发行说明中提到的 Behaviour Breaking API 更改,从 1.0.0-beta071.0.0-beta08撰写。

Jetpack compose Version 1.0.0-beta08 Behavior Breaking API Change

<块引用>

破坏行为: 卡片现在消耗点击次数,使通过 Card(Modifier.clickable) 添加的点击成为空操作。请使用接受 CardonClick 的新实验性重载。 (Ia8744, b/183775620)


解决方案:

提供的解决方案是Card重载,它允许处理点击以及相关属性(如指示、interactionSource、启用/禁用)。

<块引用>

添加了一个新的 Card 重载,用于处理点击以及其他可点击功能:指示、interactionSource、启用/禁用。无法将普通的不可点击卡片与 Modifier.clickable 一起使用,因为在这些情况下卡片不会剪切波纹指示。


卡超载:

这是新的 Card 重载,它公开了 onClick 以及 interactionSourceindication

@Composable 
fun Card(
    onClick: () -> Unit,
    modifier: Modifier = Modifier,
    shape: Shape = MaterialTheme.shapes.medium,
    backgroundColor: Color = MaterialTheme.colors.surface,
    contentColor: Color = contentColorFor(backgroundColor),
    border: BorderStroke? = null,
    elevation: Dp = 1.dp,
    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
    indication: Indication? = LocalIndication.current,
    enabled: Boolean = true,
    onClickLabel: String? = null,
    role: Role? = null,
    content: @Composable () -> Unit
)