小编Rob*_*rdi的帖子

撰写:向(惰性)列添加足够的底部填充以避免 FAB 覆盖其内容的正确方法是什么?

该问题与此处讨论的问题非常相似Flutter

有没有一种方法可以动态地将底部填充添加到(惰性)列,以便其内容永远不会被 FAB 遮挡?

FAB 已添加到脚手架中,因此我希望有某种方法来动态获取此填充。

android floating-action-button android-jetpack-compose lazycolumn

8
推荐指数
1
解决办法
2238
查看次数

我怎样才能实现android fab快速拨号选择器?

我看到google.com/design上的指南更新了新资源,并添加了新版本的快速拨号选择器.我想对这样的事情产生类似的效果,怎么做呢?

我在这里问的原因是因为关于这个指南的信息不多.非常感谢任何事物(资源,代码或示例).

谢谢你的时间.

以下是我所说的几个例子(来自官方网站).

在此输入图像描述

java android material floating-action-button

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

KSP:如何获取数据类属性的默认值?

我有以下数据类注释@MyAnnotation

@MyAnnotation
data class MyDataClass(
    val foo: Boolean = true,
    val bar: Int = 123,
    val buz: String? = "abc",
)
Run Code Online (Sandbox Code Playgroud)

ClassDeclaration我可以获取所有KSPropertyDeclaration,并且我能够获取simpleName并解析KSType,但我不知道如何获取每个属性的默认值。

annotation-processing kotlin kotlin-symbol-processing

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

Android FloatingActionButton快速拨号

我目前正在使用一个Android应用程序,我在其中使用FloatingActionButton.我想使用的快速拨号有作为描述的旋转/跳出操作按钮的多个动作这个由谷歌在Android的设计页面,或可在保持应用程序的早期版本中可以看出(抱歉,但我只能发布一个链接).我正在使用Android设计支持库专门版本23.1.1(com.android.support:design:23.1.1).我已经使用Google进行了搜索并查看了FloatingActionButton的参考资料,但找不到有关快速拨号的任何信息.

我想知道是否有一种方法可以使用默认的FloatingActionButton轻松实现这一点,或者我是否必须手动编程所有过渡/动画?

另外,我希望按钮旁边有一些标签,如果可能的话,描述动作.

先感谢您!

user-interface android android-layout speed-dial

5
推荐指数
3
解决办法
6318
查看次数

用于(反)序列化 REST API 的请求和响应的模型的命名约定

我需要在 REST API 客户端中创建一些类来处理数据的(反)序列化,并且我不使用如何以有意义的方式命名这些类。

例如,使用以下 API

GET  /User
POST /Message
Run Code Online (Sandbox Code Playgroud)

我想到使用这个结构:

package com.example.model

import kotlinx.serialization.Serializable

object User {
    @Serializable
    data class Response(
        val username: String,
        val fullName: String
    )
}

object Message {
    @Serializable
    data class Request(
        val title: String,
        val message: String
    )
    @Serializable
    data class Response(
        val status: Int
    )
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何处理这样的事情(假设所有请求和响应都有不同的结构):

GET    /User
POST   /Message
DELETE /Message
Run Code Online (Sandbox Code Playgroud)

我想到了这样的事情:

object UserGet { ... }
object MessagePost { ... }
object MessageDelete { ... }
Run Code Online (Sandbox Code Playgroud)

但后来我不知道如何处理这个问题:

GET    /User
GET …
Run Code Online (Sandbox Code Playgroud)

rest serialization naming-conventions kotlin

5
推荐指数
1
解决办法
1228
查看次数

如何告诉 composeTestRule 等待 navhost 转换?

我正在尝试为完全用 Compose 编写的 Android 应用程序编写集成测试,该应用程序具有单个 Activity 并使用 Compose 导航来更改屏幕内容。

我设法正确交互并测试导航图显示的第一个屏幕,但是,一旦我导航到新目的地,测试就会失败,因为它不等待 NavHost 加载新内容。

@RunWith(AndroidJUnit4::class)
class MainActivityTest {
    @get:Rule
    val composeTestRule = createAndroidComposeRule<MainActivity>()

    @Test
    fun appStartsWithoutCrashing() {
        composeTestRule.apply {
            // Check Switch
            onNodeWithTag(FirstScreen.CONSENT_SWITCH)
                .assertIsDisplayed()
                .assertIsOff()
                .performClick()
                .assertIsOn()

            // Click accept button
            onNodeWithTag(FirstScreen.ACCEPT_BUTTON)
                .assertIsDisplayed()
                .performClick()

            // Check we are inside the second screen
            onNodeWithTag(SecondScreen.USERNAME_TEXT_FIELD)
                .assertIsDisplayed()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我确信这是一个计时问题,因为如果我在Thread.sleep(500)之前添加onNodeWithTag(SecondScreen.USERNAME_TEXT_FIELD).assertIsDisplayed(),测试就会成功。但我想Thread.sleep()在我的代码中避免使用 s 。

有没有更好的方法来告诉composeTestRuleNavHost 在执行之前等待 NavHost 加载新内容assertIsDisplayed()

PS 我知道单独测试可组合项会更好,但我真的想使用 Espresso 模拟应用程序上的用户输入,而不仅仅是测试可组合项行为。

android-espresso android-jetpack-navigation android-jetpack-compose

5
推荐指数
1
解决办法
5422
查看次数

原生Android应用程序如何支持多个SSO提供商并允许用户使用不同的帐户登录而无需在Chrome中手动注销

我正在尝试在本机 Android 应用程序中实现 SSO 登录,并希望遵循RFC 8252 (OAuth 2.0 for Native Apps)中概述的最佳实践。这需要使用自定义选项卡而不是 WebViews

B.2. Android 实现细节

应用程序可以通过 Android 自定义选项卡功能在浏览器中发起授权请求,而无需用户离开应用程序,该功能实现了应用程序内浏览器选项卡模式。当没有浏览器支持自定义选项卡时,可以使用用户的默认浏览器来处理请求。

登录过程正常工作,但是一旦用户在 Chrome 自定义选项卡中使用特定帐户登录,则如果不手动在 Chrome 中注销,则无法使用其他帐户登录。

在 iOS 上,可以使用参数设置为 的 来解决此问题ASWebAuthenticationSessionprefersEphemeralWebBrowserSessiontrue此解决方案在 Android 上不可用。

Chrome 确实为隐身自定义选项卡提供了实验性支持,但这需要用户选择加入,并在触发应用程序的深层链接时显示隐私警告。

我正在寻找一种解决方案,允许本机 Android 应用程序支持多个 SSO 提供商,并允许用户使用不同的帐户登录,而无需在 Chrome 中手动注销。

android single-sign-on oauth-2.0 chrome-custom-tabs android-deep-link

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

GTK3:听主题变化

我正在寻找一种在 PyGObject 应用程序上在主题更改时收到通知的方法。

我需要此通知,因为我正在使用matplotlib当前 GTK3 主题的标准标签颜色绘制图形,并将图形的文本颜色设置为:

temp_label = Gtk.Label()
scrolled_window.add(temp_label)
text_color = rgba_to_hex(temp_label.get_style_context().get_color(Gtk.StateType.NORMAL))
Run Code Online (Sandbox Code Playgroud)

但是,当用户切换主题时,我需要获取新的标签颜色并重新绘制图表。

目前,从深色主题变为浅色主题会使标签不可读: 可读标签 不可读的标签

python themes pygobject gtk3

3
推荐指数
1
解决办法
602
查看次数

multibranchPipelineJob 作业 DSL:如何启用发现分支和抑制自动 SCM 触发

如何在 Jenkins 作业 DSL 中为多分支管道启用行为Discover Benches和 Property 策略Suppress 自动 SCM 触发

在此输入图像描述

jenkins jenkins-job-dsl multibranch-pipeline

2
推荐指数
1
解决办法
4701
查看次数

如何在多模块、单个活动、仅 Compose 项目上显示可组合项或 ViewModel 中的小吃栏

在多模块、单一活动、仅 Compose 项目上显示 Snackbar 的最佳方式是什么?

项目依赖关系图如下所示:

依赖图

该项目的唯一活动是在app模块内部,它只是设置NavHostas content

每个feature模块都提供了可组合屏幕的列表,这些屏幕将显示在NavHost.

每个屏幕都有自己的Scaffold,因此它可以轻松地显示每个屏幕的 Snackbars ViewModel

有一个特殊的feature模块,feature-debug它在单个屏幕上显示每个模块提供的可组合列表,称为调试部分。它用于允许任何模块在调试屏幕内自动显示某些设置。featurefeature

每个调试部分都有自己的ViewModel,因此它的工作方式与屏幕完全相同。但它缺少脚手架,因为它只占用屏幕的一部分:

+-------------------------+
| Debug screen            |
|-------------------------+
|                         |
| Feature A debug section |
|                         |
|------------------------ +
|                         |
| Feature B debug section |
|                         |
|------------------------ +
|                         |
| Feature C debug section …
Run Code Online (Sandbox Code Playgroud)

android android-snackbar android-jetpack-compose

2
推荐指数
1
解决办法
3641
查看次数

Notification.Builder和FLAG_INSISTENT

我喜欢易用性,Notification.Builder但它似乎不支持持续的通知模式.

有没有一种方法来设置标志FLAG_INSISTENTNotification.Builder

android

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