Android Studio Arctic Fox Canary 8 开始发出警告 JCenter is at end of life
但是我不能只是删除jcenter()声明,因为它承载了很多 android 工件,它会导致Could not resolve all artifacts错误。解决此警告的正确方法是什么?
默认情况下,在 Jetpack Compose 中,布局子级渲染顺序与代码中子级的顺序匹配。在以下示例中,船(文本)将绘制在水面(方框)上。
\n@Composable\nfun DrawingOrderExample(submarineMode: Boolean) {\n Box(contentAlignment = Alignment.Center) {\n Box(\n modifier = Modifier\n .size(32.dp)\n .background(Color.Cyan.copy(alpha = .5f))\n )\n\n Text("\xe2\x9b\xb5")\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我可以根据论证强制把船拖到水下吗submarineMode?
在androidx.compose.material.icons.Icons 中有许多常用的材质图标,但有些缺失。举个例子,没有打印图标。
...
import androidx.compose.material.Icon
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Menu // ok
import androidx.compose.material.icons.filled.Print // error, unresolved reference
@Composable
fun IconsExample() {
Icon(Icons.Filled.Menu, "menu") // ok
Icon(Icons.Filled.Print, "print") // error, unresolved reference
}
Run Code Online (Sandbox Code Playgroud)
在应用程序中使用这些缺失图标的最简单方法是什么?
假设我想创建一个与其中最宽的子文本一样宽的列。为此,列可以使用修饰符 或,但结果看起来相同。这两个修饰符有什么区别?例如:.wrapContentWidth().width(IntrinsicSize.Max)
Column(
modifier = Modifier.wrapContentWidth()
// modifier = Modifier.width(IntrinsicSize.Max)
) {
Text("short text", Modifier.background(Color.LightGray))
Text("some longer text", Modifier.background(Color.LightGray))
}
Run Code Online (Sandbox Code Playgroud)
让我们有以下strings.xml资源文件:
<resources>
<!-- basic string -->
<string name="app_name">My Playground</string>
<!-- basic string with an argument -->
<string name="greeting">Hello %!</string>
<!-- plural string -->
<plurals name="likes">
<item quantity="one">%1d like</item>
<item quantity="other">%1d likes</item>
</plurals>
<!-- string array -->
<string-array name="planets">
<item>Earth</item>
<item>Mars</item>
</string-array>
</resources>
Run Code Online (Sandbox Code Playgroud)
如何在 Jetpack Compose 中使用这些资源?
android android-resources android-jetpack android-jetpack-compose
大多数 Jetpack Compose API 使用Dp作为尺寸单位,但有时需要像素值。如何将 dp 值转换为 px?举个例子,graphicsLayer()修饰符接受translationX/Y以像素为单位的参数。
文档说修饰符是从左边应用的。但从这个例子来看,它们似乎是从右侧应用的:首先边框,然后填充,因为文本和边框之间没有空格
Text("Hi there!", Modifier.padding(10.dp).border(2.dp, Color.Magenta))
Run Code Online (Sandbox Code Playgroud)
UIEvent.detail属性应包含当前的点击计数。MDN Web 文档表明该属性在所有现代浏览器上都得到完全支持,并且它在我测试过的所有浏览器(移动 Safari 除外)上都能正常工作。我在 IOS 12.3.1 上尝试了我的 Angular 应用程序和MDN 示例detail,无论点击了多少次,该属性始终为 1。是手机 Safari 的问题吗?有什么解决方法(无需手动计算点击次数)吗?
我正在尝试实现 Android ListenableWorker该startWork() 方法返回com.google.common.util.concurrent.ListenableFuture接口,但最后一个不可用。我还需要com.google.common.util.concurrent.SettableFuture实施,但这也是不可用的。我应该包含哪个模块才能使这些类型可用?
应用程序.gradle
...
dependencies {
...
implementation "androidx.work:work-runtime-ktx:2.1.0"
}
Run Code Online (Sandbox Code Playgroud)
我的Worker.kt
class SendRegistrationTokenWorker(
context: Context,
params: WorkerParameters,
) : ListenableWorker(context, params) {
override fun startWork(): ListenableFuture<Result> { ... }
}
Run Code Online (Sandbox Code Playgroud)
据我了解,我想要的依赖项是com.google.guava:listenablefuture:1.0,但androidx.work:work-runtime-ktx:2.1.0已经依赖于它,以及应用程序使用的其他库。问题是com.google.guava:listenablefuture:1.0解析为com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava,它不包含所需的类型,它只是一个模拟依赖项。
我尝试添加单独的com.google.guava:listenablefuture:1.0依赖项,但它也解析为com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava并且没有任何变化。
如果我强制listenablefuture版本为1.0,我会收到错误:
程序类型已存在:com.google.common.util.concurrent.ListenableFuture
android {
...
configurations.all {
resolutionStrategy {
force "com.google.guava:listenablefuture:1.0"
}
}
}
...
Run Code Online (Sandbox Code Playgroud)