我想LiveData<List<DataClass>>在 @Composable 函数中使用 a作为我的状态源。
我不能使用新的 @Model 注释,我在这个演讲中看到链接(在 32:06)可以通过调用函数来使用 LiveData、Flow 等+observe(/* Data */)。
问题:我找不到视频中使用的函数 (+observe()) 或任何其他使用 LiveData 作为来源的方法。如何在 @Compose 函数中使用 LiveData?
项目摇篮:
buildscript {
ext.kotlin_version = '1.3.60-eap-76'
repositories {
google()
jcenter()
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.0-alpha04'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序gradle:依赖项:
def lifecycle_version = "2.1.0"
def compose_version = "0.1.0-dev02"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
androidTestImplementation "androidx.arch.core:core-testing:$lifecycle_version"
implementation "androidx.compose:compose-runtime:$compose_version"
kapt "androidx.compose:compose-compiler:$compose_version"
// Android Compose
implementation "androidx.ui:ui-layout:$compose_version"
implementation "androidx.ui:ui-foundation:$compose_version" …Run Code Online (Sandbox Code Playgroud) android android-livedata android-jetpack android-jetpack-compose
如何在 jetpack compose 中自动关注文本字段。当我单击文本字段并开始在其上键入时。同时,当我单击后退按钮时,然后当我尝试单击文本字段时,没有任何反应。
val textState = remember { mutableStateOf(TextFieldValue()) }
TextField(
modifier = Modifier.fillMaxWidth(),
value = textState.value,
onValueChange = { value : TextFieldValue ->
textState.value = value
}
)
Run Code Online (Sandbox Code Playgroud) 无法找到更改 TextField 的光标位置并使其成为单行的方法。有人找到办法了吗?
此时我使用的是最新jetpack-compose 1.0.0-alpha03版本。
我想在画布内绘制文本以显示图表的标签。
在 Android 上,我可以使用该库: https: //github.com/tehras/charts(对于 Compose:1-alpha03),但在桌面上我不能。
因此我尝试重写损坏的部分。但我无法显示标签。
原始代码,我尝试更改以与桌面源一起使用:
private val textPaint = android.graphics.Paint().apply {
isAntiAlias = true
color = labelTextColor.toLegacyInt()
}
private val textBounds = android.graphics.Rect()
override fun drawAxisLabels(
drawScope: DrawScope,
canvas: Canvas,
drawableArea: Rect,
minValue: Float,
maxValue: Float
) = with(drawScope) {
val labelPaint = textPaint.apply {
textSize = labelTextSize.toPx()
textAlign = android.graphics.Paint.Align.RIGHT
}
val minLabelHeight = (labelTextSize.toPx() * labelRatio.toFloat())
val totalHeight = drawableArea.height
val labelCount = max((drawableArea.height / minLabelHeight).roundToInt(), 2)
for (i in 0..labelCount) …Run Code Online (Sandbox Code Playgroud)