标签: android-jetpack

Jetpack Compose 测试:断言特定图像已设置

我有一个Image如下所示的组合:

Image(
    bitmap = ImageBitmap.imageResource(id = R.drawable.testimage),
    contentDescription = null, // Only decorative image
    contentScale = ContentScale.FillWidth,
    modifier = Modifier
        .requiredHeightIn(max = 250.dp)
        .fillMaxWidth()
        .semantics { testTag = "MyTestTag" },
)
Run Code Online (Sandbox Code Playgroud)

在仪器测试期间,我想确保设置了正确的绘图。我在类中没有找到任何东西可以实现这一点,例如SemanticsProperties编写自定义匹配器。有人可以帮忙吗?

android kotlin android-jetpack android-jetpack-compose

20
推荐指数
2
解决办法
4720
查看次数

为 Jetpack Compose 视图的 Play Console“预启动报告”提供登录凭据

我可以看到“Play Console”期望为“用户名/密码资源 ID”字段传递“旧” ID: android.view.View

我无法弄清楚如何为 Jetpack Compose 视图层次结构提供资源 ID。我怀疑它应该以某种方式与 相连Semantics,但我不确定 Play Console 是否支持 Jetpack Compose 视图。

好奇是否有人能够设置这个。

android prelaunch google-play-console android-jetpack android-jetpack-compose

20
推荐指数
0
解决办法
458
查看次数

导航组件,控制何时显示汉堡包或后退图标

我有以下活动

class MainActivity : AppCompatActivity() {

private lateinit var drawerLayout: androidx.drawerlayout.widget.DrawerLayout

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)

    drawerLayout = drawer_layout

    val navController = Navigation.findNavController(this, R.id.fragment_main_navHost)

    setSupportActionBar(toolbar)

    NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)
    navView_main.setupWithNavController(navController)
}

override fun onSupportNavigateUp(): Boolean {
    return NavigationUI.navigateUp(drawerLayout,
        Navigation.findNavController(this, R.id.fragment_main_navHost))
}

override fun onBackPressed() {
    if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
        drawerLayout.closeDrawer(GravityCompat.START)
    } else {
        super.onBackPressed()
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以看到它与导航图相关联,我正在使用导航抽屉.当我浏览抽屉中的项目时,我想保留汉堡图标,只有当我点击片段或弹出窗口中的项目时才将其更改为上/后按钮,并确保系统的行为反映了什么用户期望基于显示的图标.那可能吗

android kotlin navigation-drawer android-jetpack android-architecture-navigation

19
推荐指数
2
解决办法
5423
查看次数

使用ViewPager和TabLayout的Android Jetpack导航

对于新的应用程序,我使用Jetpack导航库来实现正确的后退导航.第一级导航是导航抽屉,如文档中所述,可以使用jetpack导航.但是ViewPager和TabLayout实现了另一个导航级别.由TabLayout切换的片段包含额外的线性导航层次结构.但是,在Jetpack Navigation中似乎不支持ViewPager/TabLayout.必须实现FragmentPagerAdapter,并在切换选项卡时结束托管后端堆栈.顶级导航与每个选项卡内的导航之间存在脱节.有没有办法让这个工作与Jetpack导航?

android android-navigation android-architecture-components android-jetpack android-architecture-navigation

19
推荐指数
2
解决办法
4454
查看次数

导航组件:找不到 NavController

我正在使用导航组件在我的应用程序中导航。它在片段内工作正常,但无法在包含实际导航主机的活动中找到导航主机。

当用户单击 FAB 时,我试图打开一个新片段,我将其包含在主要活动的 XML 中。当我调用 findNavController() 时,它找不到控制器。导航主机控制器位于 XML 布局中。我不明白为什么它找不到它。

主要活动

class MainActivity : AppCompatActivity(), OnActivityComponentRequest {
    override fun getTabLayout(): TabLayout {
        return this.tabLayout
    }

    override fun getFap(): FloatingActionButton {
        return this.floatingActionButton
    }

    private lateinit var tabLayout: TabLayout
    private lateinit var floatingActionButton: FloatingActionButton

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(toolbar)
        this.tabLayout = tabs
        this.floatingActionButton = fab

        fab.setOnClickListener {

         it.findNavController().navigate(R.id.addNewWorkoutFragment)

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

活动主 XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".domain.MainActivity"
        android:animateLayoutChanges="true">

    <com.google.android.material.appbar.AppBarLayout
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:theme="@style/AppTheme.AppBarOverlay"> …
Run Code Online (Sandbox Code Playgroud)

navigation android android-jetpack

19
推荐指数
3
解决办法
4万
查看次数

如何使用导航控制器组件设置不同的工具栏?

我实际上不确定,如何使用导航控制器组件设置不同工具栏的正确方法或最佳实践

在我的应用程序中。我想设置 2 个不同的工具栏。

  1. 绿色工具栏
  2. 红色工具栏

两个不同颜色的工具栏。这只是为了简化案例,实际上我有多个工具栏

我正在使用导航控制器组件。目前在我的主活动中作为主持人,我使用此代码在主活动中设置了绿色工具栏

        setSupportActionBar(green_toolbar)
        supportActionBar?.setDisplayShowTitleEnabled(false)

        // set up top hierarchy destination
        val appBarConfiguration = AppBarConfiguration(setOf(
            R.id.destination_home,
            R.id.destination_search,
            R.id.destination_user_control,
            R.id.destination_create_event)
        )

        green_toolbar.setupWithNavController(navController,appBarConfiguration)
Run Code Online (Sandbox Code Playgroud)

那么使用导航控制器组件设置不同工具栏的最佳方法是什么?

我必须在我的主要活动中制作这两个不同的工具栏吗?或者我是否必须将 fragmentY 目的地(具有红色工具栏)设置为另一个活动而不是片段?

或者....我不知道....请帮忙:)

android android-navigation android-architecture-components android-jetpack android-architecture-navigation

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

将 gif 添加到 Jetpack Compose 中

我想将一张 gif 放入我的应用程序中。我知道如何插入图像资源,但是当我尝试添加 gif 时,它变成了静态图像。

DrawImage(image = +imageResource(R.drawable.gif))
Run Code Online (Sandbox Code Playgroud)

有没有人尝试过在 Jetpack Compose 中添加 gif,因为很难在网上找到如何添加 gif 文档?

android gif kotlin android-jetpack android-jetpack-compose

19
推荐指数
3
解决办法
2万
查看次数

底部导航栏与 Jetpack Compose 中的屏幕内容重叠

我有一个在 aBottomNavBar中被调用bottomBar的 a Scaffold
每个屏幕都包含一个LazyColumn显示一堆图像的。
出于某种原因,当我完成滚动时,BottomNavBar项目列表的下部重叠。
我怎样才能解决这个问题?

在此处输入图片说明

这里是MainActivity的设置内容

SetContent{
    Scaffold(
        topBar = {
            TopAppBar(
                title = { Text(text = "tartufozon") },
                actions = {
                    IconButton(onClick = { Timber.d("Mail clicked") }) {
                        Icon(Icons.Default.Email, contentDescription = null)
                    }
                }
            )
        },
        bottomBar = {
            BottomNavBar(navController = navController)
        }
    ) {
    BottomNavScreensController(navController = navController)
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-jetpack-compose

19
推荐指数
4
解决办法
1620
查看次数

为什么 Jetpack Compose-beta08 中可组合的 Text("") 的 fontSize 中只有“.sp”而没有“.dp”

我希望文本的大小不会.dp根据系统字体而改变。如何在 Jetpack Compose“文本”可组合项中实现此目的

android android-jetpack android-jetpack-compose composable

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

使用 Compose Navigation 导航时 TopAppBar 闪烁

我有 2 个屏幕,它们都有自己的ScaffoldTopAppBar。当我使用 Jetpack Navigation Compose 库在它们之间导航时,应用程序栏会闪烁。为什么会发生这种情况以及我该如何摆脱这种情况?

在此输入图像描述

代码:

导航:

@Composable
fun TodoNavHost(
    navController: NavHostController,
    modifier: Modifier = Modifier
) {
    NavHost(
        navController = navController,
        startDestination = TodoScreen.TodoList.name,
        modifier = modifier
    ) {
        composable(TodoScreen.TodoList.name) {
            TodoListScreen(
                onTodoEditClicked = { todo ->
                    navController.navigate("${TodoScreen.AddEditTodo.name}?todoId=${todo.id}")
                },
                onFabAddNewTodoClicked = {
                    navController.navigate(TodoScreen.AddEditTodo.name)
                }
            )
        }
        composable(
            "${TodoScreen.AddEditTodo.name}?todoId={todoId}", 
            arguments = listOf(
                navArgument("todoId") {
                    type = NavType.LongType
                    defaultValue = -1L
                }
            )
        ) {
            AddEditTodoScreen(
                onNavigateUp = {
                    navController.popBackStack() 
                },
                onNavigateBackWithResult = { result …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-jetpack-navigation android-jetpack-compose android-jetpack-compose-scaffold

19
推荐指数
3
解决办法
4777
查看次数