我怎样才能在全屏渲染树的深处制作一个可组合项,类似于Dialog可组合项的工作原理?
例如,当用户单击图像时,它会显示该图像的全屏预览,而无需更改当前路线。
我可以在 CSS 中使用position: absoluteor来完成此操作position: fixed,但如何在 Jetpack Compose 中执行此操作?有可能吗?
一种解决方案是在树的顶部有一个可组合项,可以将另一个可组合项作为参数从树中的其他位置传递,但这听起来有点混乱。当然有更好的方法。
从 的1.2.0-beta01开始androidx.activity:activity-ktx,不能再launch使用创建的请求Activity.registerForActivityResult(),如上面“行为更改”下的链接中突出显示的那样,并在此处的Google 问题中看到。
应用程序@Composable现在应该如何通过函数启动这个请求?以前,应用程序可以MainActivity通过使用 向下传递链的实例,Ambient然后轻松启动请求。
例如,可以通过以下方式解决新行为:在 Activity 的onCreate函数之外实例化后,将注册活动结果的类传递到链中,然后在Composable. 但是,无法通过这种方式注册完成后要执行的回调。
可以通过创建 custom 来解决这个问题ActivityResultContract,它在启动时接受回调。但是,这意味着几乎没有任何内置功能ActivityResultContracts可以与 Jetpack Compose 一起使用。
TL; 博士
应用程序如何ActivityResultsContract从@Composable函数发起请求?
android android-jetpack android-jetpack-compose registerforactivityresult
我有一个基本的create-react-appTypeScript 项目 ( client)。只是目录,我有一个server和一个shared文件夹。在shared文件夹内,我有许多在和之间共享的interfaces 和s 。enumserverclient
我希望将此shared文件夹链接到client和server包。
首先,我转到shared并运行$ yarn link,然后$ yarn link shared从client和server文件夹中运行。
服务器非常高兴,而且大多数情况下客户端也是如此。但是,一旦我使用中目录中enum的其中一个,就会收到错误:sharedclient
../shared/src/models/Roles.ts 4:0
Module parse failed: The keyword 'enum' is reserved (4:0)
File was processed with these loaders:
* ./node_modules/@pmmmwh/react-refresh-webpack-plugin/loader/index.js
You may need an additional loader to handle the result of these loaders. …Run Code Online (Sandbox Code Playgroud) 下面的两个示例简单地将“a”添加到给定的默认值。该compose_version使用的1.0.0-alpha03是最新的截至今天(据我所知)。
这个例子与我在研究过程中发现的大多数例子最相似。
示例 1
@Composable
fun MyScreen() {
val (name, setName) = remember { mutableStateOf("Ma") }
Column {
Text(text = name) // 'Ma'
Button(onClick = {
setName(name + "a") // change it to 'Maa'
}) {
Text(text = "Add an 'a'")
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这并不总是实用的。例如,数据比单个字段更复杂。例如一个类,甚至一个Room data class.
示例 2
// the class to be modified
class MyThing(var name: String = "Ma");
@Composable
fun MyScreen() {
val (myThing, setMyThing) = remember { mutableStateOf(MyThing()) }
Column …Run Code Online (Sandbox Code Playgroud) android state kotlin android-jetpack android-jetpack-compose
我目前正在使用一种不太像scala的方法来解析大型Unix邮箱文件。我仍在学习该语言,并想挑战自己以寻求更好的方法,但是,我不相信我对使用an可以做什么Iterator以及如何有效使用它有扎实的了解。
我目前正在使用 org.apache.james.mime4j,并且使用org.apache.james.mime4j.mboxiterator.MboxIterator来java.util.Iterator从文件中获取,因此:
// registers an implementation of a ContentHandler that
// allows me to construct an object representing an email
// using callbacks
val handler: ContentHandler = new MyHandler();
// creates a parser that parses a SINGLE email from a given InputStream
val parser: MimeStreamParser = new MimeStreamParser(configBuilder.build());
// register my handler
parser.setContentHandler(handler);
// Get a java.util.Iterator
val iterator = MboxIterator.fromFile(fileName).build();
// For each email, process it using above Handler
iterator.forEach(p => …Run Code Online (Sandbox Code Playgroud) 一般来说,Jetpack Compose 中的大多数组件似乎都非常容易定制。
但是,对于TextField. 例如,假设我想做这样的事情:
人们会认为简单地包装BaseTextField会起作用。不过貌似BaseTextField组件有bug ,我开了个issue。在重新渲染组件之前,此错误将不允许用户在焦点远离文本字段后聚焦文本字段。
引用这一点,我尝试自定义OutlinedTextField和TextField组件,但无法自定义它们以看起来像上图。如果不是因为光标颜色使用了该activeColor属性,我可以让它工作。
创建一个类似上面的可用文本字段的正确解决方法是什么?
android android-textinputlayout android-jetpack android-jetpack-compose
我想在用户按下任一音量按钮时执行一个操作,并在他们停止按下时执行另一个操作,类似于我可以通过覆盖touchesBegan()和touchesEnded.
我知道我可以在更改时列出音量级别,如下所示:
NotificationCenter.default.addObserver(self, selector: #selector(volumeChanged), name: NSNotification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), object: nil)
@objc func volumeChanged(notification: NSNotification) {
if let userInfo = notification.userInfo {
if let volumeChangeType = userInfo["AVSystemController_AudioVolumeChangeReasonNotificationParameter"] as? String {
// do something here, such as a switch based off of "volumeChangeType"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,一旦用户完全调高或调低音量,就不再触发事件。此外,当用户停止按下按钮时不会触发任何事件。这是有道理的,因为我实际上是在听音量变化事件,而不是音量按钮按下事件。
有没有办法在 iOS 中收听物理按钮按下?
看起来从res文件夹中的 Android Vector Resources 加载自定义图标的唯一方法是@Composable使用该vectorResource(R.drawable.myVectorName)方法在函数中执行此操作。
这是伟大的,但是我喜欢取的语法VectorAssets的Icon(asset: VectorAsset)类,它看起来像Icon(Icons.Default.Plus)。
看起来该vectorResource()方法使用了一个名为的内部方法loadVectorResource(),它用来读取构成矢量资产文件的实际 XML 文件的方法也是内部方法。
我将如何像MyAppIcons.Default.SomeIcon在 Jetpack Compose 中那样创建一个对象?
编辑
所以,我已经找到了一个解决方案。但是,对内置Icon()函数进行我自己的扩展/重载会很好,但我不确定是否有适当的方法来做到这一点。
android kotlin kotlin-android-extensions android-vectordrawable android-jetpack-compose
我在弄清楚如何验证.NET Core Web API中由AWS Cognito提供给客户端的JWT时遇到了一些麻烦。
我不仅无法弄清楚Microsoft.IdentityModel.Tokens.TokenValidationParameters应该使用的变量是什么,而且一旦我终于知道了,我不知道如何从中检索JWT密钥集。https://cognito-idp.{region}.amazonaws.com/{pool ID}/.well-known/jwks.json
最后,尽管经过了很多随机的Google搜索和反复试验,我还是找到了一个(看似不是很有效的解决方案)解决方案。但是,我花了太多时间来做。出于这一点,再加上严重缺乏有关该主题的AWS文档这一事实,我决定发布此问答,以帮助其他人将来更轻松地找到此解决方案。
如果有更好的方法,请告诉我,因为除了下面列出的答案外,我还没有找到其他方法。
data class使用 es修改简单值EditText相当简单,通常如下所示:
data class Person(var firstName: String, var lastName: Int)
// ...
val (person, setPerson) = remember { mutableStateOf(Person()) }
// common `onChange` function handles both class properties, ensuring maximum code re-use
fun <T> onChange(field: KMutableProperty1<Person, T>, value: T) {
val nextPerson = person.copy()
field.set(nextPerson, value)
setPerson(nextPerson)
}
// text field for first name
TextField(
value = person.firstName,
onChange = { it -> onChange(Person::firstName, it) })
// text field for last name name
TextField(
value = …Run Code Online (Sandbox Code Playgroud) android state kotlin android-jetpack android-jetpack-compose
我不知道我是否不在正确的地方,但是我似乎找不到正确的指南来开始使用React / .NET Core 2.1 Web API和(本地)Active Directory身份验证。
一般来说,我对.NET身份认证比较陌生,而对Active Directory身份认证则完全陌生。
我首先使用.NET Core 2.1 React模板并尝试向其添加auth,但是完全迷失了。
我什至从哪里开始?
例如,假设我已经val fs2Stream: Stream[IO, Byte]并且需要调用一些需要java.io.InputStream.
我想我对 FS2 还太陌生,但我似乎找不到答案。我尝试使用fs2.io.toInputStreamandfs2.io.readInputStream但我不知道如何提供一些所需的参数。我已经在万能的 Google 上搜索了答案,但自从大多数人上次寻找答案以来,API 似乎已经发生了变化。
我该如何去做类似以下的事情?
def myFunc(data: fs2.Stream[IO, Byte]): InputStream[Byte] = someMagicalFunction(data)
Run Code Online (Sandbox Code Playgroud)