小编mam*_*ama的帖子

如何使伴奏导航 BottomSheet 完全展开?

我知道普通的底板可以这样设置

rememberModalBottomSheetState(
  initialValue = ModalBottomSheetValue.Hidden, 
  confirmStateChange = { it != ModalBottomSheetValue.HalfExpanded },
)
Run Code Online (Sandbox Code Playgroud)

这样它就永远不会扩大一半。但是,如果我想在伴奏导航中使用底页执行同样的操作该怎么办?

android kotlin android-jetpack-compose jetpack-compose-accompanist

11
推荐指数
1
解决办法
2011
查看次数

如何在 Linux 终端上进行按键检测,python 中的低级样式

我刚刚在 python 中实现了一个 Linux 命令外壳,仅使用os库的低级系统调用,诸如此类fork()

我想知道如何实现一个键侦听器,该侦听器将侦听键 (UP|DOWN) 以滚动浏览我的 shell 的历史记录。

我想在不使用任何花哨的库的情况下做到这一点,但我也希望这不是超级复杂的事情。到目前为止,我的代码只有大约 100 行代码,我不想为了获得一个简单的功能而创建一个怪物:D

我对这个问题的想法是,应该可以创建一个带有某种循环的子进程,它将侦听 up^[[A和 down ^[[B,按键,然后以某种方式将文本放入我的输入字段,就像一个普通终端。

到目前为止,我最感兴趣的是 key-listener 的可能性。但接下来我可能必须弄清楚如何将该文本输入到输入字段中。关于这一点,我想我可能必须使用提供的一些stdin功能sys

我只对让它在 Linux 上运行感兴趣,并希望继续使用低级系统调用,最好不是为我处理所有事情的 Python 库。这是一个学习练习。

python linux keypress low-level python-os

7
推荐指数
1
解决办法
866
查看次数

如何返回带有防护和双重递归的 lambda?

我用Python编写了这个函数:

def calc(a): return lambda op: {
    '+': lambda b: calc(a+b),
    '-': lambda b: calc(a-b),
    '=': a}[op]
Run Code Online (Sandbox Code Playgroud)

所以你可以这样计算:

calc(1)("+")(1)("+")(10)("-")(7)("=")
Run Code Online (Sandbox Code Playgroud)

结果将是5

我想在 Haskell 中制作相同的函数来了解 lambda,但我遇到了解析错误。

我的代码如下所示:

calc :: Int -> (String -> Int)
calc a = \ op 
    | op == "+" = \ b calc a+b
    | op == "-" = \ b calc a+b
    | op == "=" = a

main = calc 1 "+" 1 "+" 10 "-" 7 "="
Run Code Online (Sandbox Code Playgroud)

recursion lambda haskell function return-type

6
推荐指数
3
解决办法
386
查看次数

如何在 jetpack compose 中通过键盘接收 GIF?

我正在尝试在 jetpack compose 中进行聊天,并且希望能够使用三星上的标准 gif 键盘发送 gif。

当我在普通文本字段上单击 GIF 时,我当前收到一条消息“无法在此处输入此内容”

我发现了一个叫做Commit Content API的东西,它应该可以在旧的 EditText 中添加 GIF,所以我在 AndroidView 中尝试,现在我不再收到错误消息,但我也不知道 GIF 在哪里是什么以及它是如何表示的。

AndroidView(factory = {
    val editText = @SuppressLint("AppCompatCustomView")
    object : EditText(it) {

        override fun setOnReceiveContentListener(
            mimeTypes: Array<out String>?,
            listener: OnReceiveContentListener?
        ) {
            super.setOnReceiveContentListener(mimeTypes, listener)
        }


        override fun onCreateInputConnection(editorInfo: EditorInfo): InputConnection {
            val ic: InputConnection = super.onCreateInputConnection(editorInfo)
            EditorInfoCompat.setContentMimeTypes(editorInfo, arrayOf("image/gif"))

            val callback =
                InputConnectionCompat.OnCommitContentListener { inputContentInfo, _, _ ->
                    try {
                        inputContentInfo.requestPermission()
                    } catch (e: Exception) {
                        return@OnCommitContentListener false
                    }
                    true …
Run Code Online (Sandbox Code Playgroud)

android mime-types kotlin android-jetpack-compose

6
推荐指数
1
解决办法
1297
查看次数

如何使用 jetpack compose 禁用屏幕侧面的 Android 系统导航手势?

我正在使用一个绘图应用程序来实现一个绘图应用程序AndroidView,它占据了整个屏幕,并且用户将在整个屏幕上绘图。但是,当手指触摸屏幕的右侧或左侧时,应用程序将被拖走并最小化或弹出后台。

仅当我处于此状态时,如何使用 jetpack compose 禁用此行为AndroidView

android android-jetpack-compose

5
推荐指数
0
解决办法
461
查看次数

如何在 kotlin 中生成函数式风格的列表?

我正在开发一个函数,该函数将接收预订列表,并且每个预订都包含一个 unix 时间戳。

我正在使用 viewpager 的功能,其中每个页面都包含一个 recyclerview,因此我想创建一个天数列表,包含当前日期和上次预订日期之间的所有日期。

每天都有自己的日期和预订列表,该列表也可以为空。

我想以函数式风格创建日期列表,我真的不知道如何做,但我很确定 kotlin 有一些不错的功能隐藏在某处供我执行。

先感谢您。:)

这是我的函数的样子,以及我在其中使用的模型。

data class Day(val date:Date, val bookings: List<Bookink>)
data class Booking(val id:String, val time:Long, val user:User)

fun dates(bookings: List<Booking>): List<Day> {
    val lastDate = Date(bookings.last().time)
    val days = ArrayList<Day>()
    val cal = GregorianCalendar()
    cal.time = Date()

    while (cal.time.before(lastDate)) {
        days.add(Day(cal.time, bookings.filter { (Date(it.time) == cal.time) }))
        cal.add(Calendar.DATE, 1)
    }

    return days
}
Run Code Online (Sandbox Code Playgroud)

functional-programming list kotlin

0
推荐指数
1
解决办法
255
查看次数