所以我尝试使用 JetPack compose 创建一个国际象棋棋盘,并设法绘制了一些布局。但是,现在我有一个问题,我希望板方形的高度与宽度相等。我希望它是完美的正方形。
注意:我不想给出任何固定的宽度或高度。我想在屏幕的宽度中容纳正方形,然后每个正方形的高度应该与宽度一样多。
我尝试过的:
@ExperimentalFoundationApi
class PlayGameActivity : BaseActivity() {
val darkSquare = Color(0xFF779556)
val lightSquare = Color(0xFFEBECD0)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Column {
Board()
}
}
}
@Composable
fun Board() {
Column {
for (i in 0 until 8) {
Row {
for (j in 0 until 8) {
val isLightSquare = i % 2 == j % 2
val squareColor = if (isLightSquare) lightSquare else darkSquare
Box(
modifier = Modifier
.weight(1f) …Run Code Online (Sandbox Code Playgroud) 对于 XML 中声明的视图,我们可以使用SpannableStringBuilder此处提到的/sf/answers/342818871/ 来为部分字符串着色。
但是使用 JetPack compose,Text我无法仅使用单个Text.
我想要这样的东西。
正如您所看到的,只有“注册”文本具有不同的颜色,而且我想让它可点击。
这就是我的文本代码目前的样子
Text(text = "Don't have an account? Sign Up",
modifier = Modifier.align(Alignment.BottomCenter),
style = MaterialTheme.typography.h6,
color = MaterialTheme.colors.secondary,
)
Run Code Online (Sandbox Code Playgroud)
这在jetpack compose中可能吗?
android kotlin android-jetpack-compose android-compose-textfield
我创建了一个新的 react-native 项目,并添加了我的 android native 模块作为依赖项。使用官方文档https://reactnative.dev/docs/native-modules-setup
当我运行它时,我收到以下堆栈跟踪错误:
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libfbjni.so result: 0
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:825)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:673)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:611)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:559)
at com.facebook.soloader.NativeLoaderToSoLoaderDelegate.loadLibrary(NativeLoaderToSoLoaderDelegate.java:25)
at com.facebook.soloader.nativeloader.NativeLoader.loadLibrary(NativeLoader.java:44)
at com.facebook.jni.HybridData.<clinit>(HybridData.java:34)
at com.facebook.flipper.android.FlipperThread.run(FlipperThread.java:25)
Run Code Online (Sandbox Code Playgroud)
以下是我的 package.json
{
"name": "albums",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"test": "jest",
"lint": "eslint ."
},
"dependencies": {
"axios": "^0.19.2",
"react": "16.11.0",
"react-native": "0.62.0-rc.5",
"react-native-my-fancy-library": "../react-native-my-fancy-library/"
},
"devDependencies": {
"@babel/core": "^7.9.0",
"@babel/runtime": "^7.9.2",
"@react-native-community/eslint-config": "^1.0.0",
"babel-jest": "^25.3.0", …Run Code Online (Sandbox Code Playgroud) 我正在使用Android studio 2020.3.1 Canary 15在 jetpack compose 中启动一个简单的基础项目。我遵循了本指南https://developer.android.com/jetpack/compose/setup并添加了所需的依赖项,我还将它们更新为最新版本beta06,因为它显示了警告。
现在,我运行时出现以下错误:
org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: Couldn't inline method call 'Column' into
local final fun <anonymous>(): kotlin.Unit defined in <packagename>.onCreate
{
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
}
}
Cause: Not generated
Run Code Online (Sandbox Code Playgroud)
我的项目级别build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.0-alpha15"
classpath …Run Code Online (Sandbox Code Playgroud) 我在布局边界方面遇到问题,并认为当我激活或停用“显示布局边界”时,我必须重新启动应用程序(活动),否则它不起作用
在诺基亚 7.2 Android 10、Google 模拟器 Android 11 上测试
我想将我的图像徽标从屏幕 A 动画到屏幕 B。在基于 XML 的布局中,可以使用windowContentTransitions& transitionName。所以我想问Jetpack Compose中是否有类似的功能中是否有类似的功能?
我已经看过这个https://github.com/mobnetic/compose-shared-element
但是,是否有类似于 XML 的内置功能?
我创建了两个TextField电子邮件、密码和Button登录名。现在,单击该按钮后,我想访问文本并根据验证显示成功/错误。
问题是它们位于两个不同的可组合函数中。
@Composable
fun EmailField() {
var email by remember { mutableStateOf("") }
TextField(
modifier = Modifier.fillMaxWidth(0.9f),
colors = TextFieldDefaults.textFieldColors(
textColor = Color.White,
focusedIndicatorColor = Color.White,
focusedLabelColor = Color.White
),
value = email,
onValueChange = { email = it },
label = { Text("Email") },
leadingIcon = {
Icon(
Icons.Filled.Email,
"contentDescription",
modifier = Modifier.clickable {})
}
)
}
Run Code Online (Sandbox Code Playgroud)
按钮:
@Composable
private fun LoginButton() {
Button(
onClick = {
// validate email and password here
},
colors …Run Code Online (Sandbox Code Playgroud) 我今天安装了 4.2,自从这个操作后,我看不到旧文件中创建的一些页面,它给了我这个错误:
渲染问题:
java.lang.reflect.InvocationTargetException
at jdk.internal.reflect.GeneratedMethodAccessor861.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at android.view.BridgeInflater.lambda$createViewFromCustomInflater$0(BridgeInflater.java:259)
at android.view.BridgeInflater.createViewFromCustomInflater(BridgeInflater.java:285)
at android.view.BridgeInflater.onCreateView(BridgeInflater.java:122)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:928)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:948)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1002)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:309)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1121)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:354)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:431)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:141)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:710)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$6(RenderTask.java:865)
at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$2.run(RenderExecutor.kt:174)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
at java.base/java.lang.String.charAt(String.java:693)
at android.content.res.BridgeTypedArray.getType(BridgeTypedArray.java:1024)
at android.content.res.BridgeTypedArray.getType(BridgeTypedArray.java:809)
at android.content.res.BridgeTypedArray.getValue(BridgeTypedArray.java:778)
at android.content.res.BridgeTypedArray.peekValue(BridgeTypedArray.java:847)
at android.view.View.<init>(View.java:5951) …Run Code Online (Sandbox Code Playgroud) 当用户执行某些操作(例如注册)时,我想显示不确定的进度对话框。使用ProgressDialog.
对于 compose,我发现了这个How can I render plain android ProgressBar with Compose?但这并不是我想要的,因为它只是一个视图。它不像对话框那样覆盖屏幕。
随着CircularProgressIndicator我能够做到这一点:
如您所见,它显示在视图下方。
我想创建这样的东西:
它应该有:
如何在 Jetpack compose 中实现这一点?