我尝试创建一个新的 Android 库模块(:widget
)。设置minSdkVersion=21
并在其中配置 Compose。
将:widget
添加到:app
模块的依赖项中。
dependencies {
implementation project(":widget")
...
}
在:app
的AndroidManifest.xml中覆盖所有Compose包的minSdkVersion
<uses-sdk
android:minSdkVersion="17"
tools:overrideLibrary="com.example.widget, androidx.compose.ui.platform, androidx.compose.material.icons, androidx.activity.compose, androidx.compose.ui.tooling, androidx.compose.ui.tooling.data, androidx.compose.material.ripple, androidx.compose.foundation, androidx.compose.animation, androidx.compose.foundation.layout, androidx.compose.ui.text, androidx.compose.ui.graphics, androidx.compose.ui.unit, androidx.compose.ui.util, androidx.compose.ui.geometry, androidx.compose.runtime.saveable, androidx.compose.animation.core" />
最后,定义自定义视图并返回已配置的ComposeView作为普通视图。
在 Android API >= 21 上可以正常工作。
fun myCustomView(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
): View {
return ComposeView(context, attrs, defStyleAttr).apply {
setContent {
Text(text = "Hello")
}
}
}