该问题与此处讨论的问题非常相似Flutter
有没有一种方法可以动态地将底部填充添加到(惰性)列,以便其内容永远不会被 FAB 遮挡?
FAB 已添加到脚手架中,因此我希望有某种方法来动态获取此填充。
android floating-action-button android-jetpack-compose lazycolumn
我看到google.com/design上的指南更新了新资源,并添加了新版本的快速拨号选择器.我想对这样的事情产生类似的效果,怎么做呢?
我在这里问的原因是因为关于这个指南的信息不多.非常感谢任何事物(资源,代码或示例).
谢谢你的时间.
以下是我所说的几个例子(来自官方网站).
我有以下数据类注释@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,但我不知道如何获取每个属性的默认值。
我目前正在使用一个Android应用程序,我在其中使用FloatingActionButton.我想使用的快速拨号有作为描述的旋转/跳出操作按钮的多个动作这个由谷歌在Android的设计页面,或可在保持应用程序的早期版本中可以看出(抱歉,但我只能发布一个链接).我正在使用Android设计支持库专门版本23.1.1(com.android.support:design:23.1.1).我已经使用Google进行了搜索并查看了FloatingActionButton的参考资料,但找不到有关快速拨号的任何信息.
我想知道是否有一种方法可以使用默认的FloatingActionButton轻松实现这一点,或者我是否必须手动编程所有过渡/动画?
另外,我希望按钮旁边有一些标签,如果可能的话,描述动作.
先感谢您!
我需要在 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) 我正在尝试为完全用 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
我正在尝试在本机 Android 应用程序中实现 SSO 登录,并希望遵循RFC 8252 (OAuth 2.0 for Native Apps)中概述的最佳实践。这需要使用自定义选项卡而不是 WebViews:
B.2. Android 实现细节
应用程序可以通过 Android 自定义选项卡功能在浏览器中发起授权请求,而无需用户离开应用程序,该功能实现了应用程序内浏览器选项卡模式。当没有浏览器支持自定义选项卡时,可以使用用户的默认浏览器来处理请求。
登录过程正常工作,但是一旦用户在 Chrome 自定义选项卡中使用特定帐户登录,则如果不手动在 Chrome 中注销,则无法使用其他帐户登录。
在 iOS 上,可以使用参数设置为 的 来解决此问题ASWebAuthenticationSession,prefersEphemeralWebBrowserSession但true此解决方案在 Android 上不可用。
Chrome 确实为隐身自定义选项卡提供了实验性支持,但这需要用户选择加入,并在触发应用程序的深层链接时显示隐私警告。
我正在寻找一种解决方案,允许本机 Android 应用程序支持多个 SSO 提供商,并允许用户使用不同的帐户登录,而无需在 Chrome 中手动注销。
android single-sign-on oauth-2.0 chrome-custom-tabs android-deep-link
我正在寻找一种在 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)
但是,当用户切换主题时,我需要获取新的标签颜色并重新绘制图表。
在多模块、单一活动、仅 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) 我喜欢易用性,Notification.Builder但它似乎不支持持续的通知模式.
有没有一种方法来设置标志FLAG_INSISTENT从Notification.Builder?