小编nas*_*bov的帖子

删除 jetpack 撰写文本字段上的默认填充

我想TextField在 Jetpack Compose 中自定义可组合项。我试图实现下图中的结果,但不知何故TextField有一些默认填充,我找不到如何更改其值。我想删除默认填充并自定义它

(右边的图像是我实现的结果。我画了一个边框,这样你就可以看到它有填充,顺便说一句,下面的TextField只是Text可组合项,它们不是TextFields

在此输入图像描述 在此输入图像描述

下面是我的TextField代码

TextField(
    value = "",
    onValueChange = {},
    modifier = Modifier
        .weight(1F)
        .padding(0.dp)
        .border(width = 1.dp, color = Color.Red),
    placeholder = {
        Text(
            "5555 5555 5555 5555", style = TextStyle(
                color = Color.Gray
            )
        )
    },
    colors = TextFieldDefaults.textFieldColors(
        backgroundColor = Color.Transparent,
        unfocusedIndicatorColor = Color.Transparent,
        focusedIndicatorColor = Color.Transparent
    ),
)
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose

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

如何仅在jetpack compose中添加底部边框

我想在布局底部添加边框。我知道我可以使用Divider可组合项,但我只想学习如何绘制边框

目前,我可以为所有边添加边框,但这不是我想要的。

Row(
    modifier = Modifier
        .border(border = BorderStroke(width = 1.dp, Color.LightGray))
) {
    TextField(value = "", onValueChange = {}, modifier = Modifier.weight(1f))
    Switch(checked = true, onCheckedChange = {})
    Icon(Icons.Filled.Close, "Remove", tint = Color.Gray)
}
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-jetpack-compose

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

如何在jetpack compose中的网格项目之间添加空间

我目前正在尝试实现一个 gridview,它由 2 列组成。我知道我可以使用列和行来实现我自己的网格视图,但我只想使用现有的方法,尽管它是实验性的。

@Composable
fun MyGridScreen() {
    LazyVerticalGrid(cells = GridCells.Fixed(2), modifier = Modifier.fillMaxSize(),contentPadding = PaddingValues(12.dp)) {
        items(15) {
            Box(
                contentAlignment = Alignment.Center,
                modifier = Modifier
                    .padding(10.dp)
                    .height(80.dp)
                    .background(Color.Red)
                    .aspectRatio(1f)

            ) {
                Text("Grid item $it", color = Color.White)
            }
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)

下面是我取得的结果。我无法在该项目下方添加空格:(

在此输入图像描述

android android-jetpack android-jetpack-compose

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

底部导航视图片段在创建后重新创建

在我的应用程序中,我使用Jetpack NavigationBottomNavigationView. 我有 4 个片段:主页、搜索、通知、个人资料,当我在主页片段中时,我再次单击底部导航视图中的主页项目,它会重新创建片段。我进行了搜索,但主要的答案是针对那些不使用喷气背包导航的人。

(顺便说一句,我只希望当我已经在该片段中时不重新创建片段,如果我不在该片段中,则可以重新创建)

以下是我的设置:

val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragmentContainerView_mainActivity) as NavHostFragment
navController = navHostFragment.navController 
binding.bottomNavView.setupWithNavController(navController)
Run Code Online (Sandbox Code Playgroud)

这是显示底部导航视图行为方式的 gif 图像

android android-fragments fragmentmanager android-bottomnav android-jetpack-navigation

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

android studio 不显示网络检查器

我看到了这个文档https://developer.android.com/studio/debug/network-profiler

这表示我们可以通过网络检查器检查网络请求和响应。但是,我的 Android Studio 没有显示此选项卡。(我尝试过invalidate caches/restart,但没有成功)

当前的android studio版本是:Arctic Fox,2020.3.1 patch 4

在此输入图像描述

android android-studio

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

喷气背包组成阴影奇怪的行为

我正在尝试构建一个外部带有阴影的文本字段

这就是我取得的成果。

在此输入图像描述

但是如果放大图片,您会在白色文本字段下看到一些矩形背景(请查看文本字段外面的角,有一个背景)

我怎样才能删除那个背景?

@Composable
fun MyTextField() {

    var text by remember {
        mutableStateOf("")
    }

    Box(
        modifier = Modifier
            .padding(15.dp)
            .shadow(5.dp)
            .background(color = Color.White, shape = RoundedCornerShape(10.dp))
            .fillMaxWidth()
            .height(50.dp),
        contentAlignment = Alignment.Center,
    ) {
        TextField(
            value = text,
            onValueChange = { text = it },
            label = { Text(text = "Phone number", color = Color.Gray, fontSize = 14.sp) },
            modifier = Modifier
                .fillMaxSize()
                .background(color = Color.Transparent, shape = RoundedCornerShape(10.dp)),

            colors = TextFieldDefaults.textFieldColors(
                backgroundColor = Color.Transparent,
                focusedIndicatorColor = Color.Transparent,
                unfocusedIndicatorColor = …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-jetpack-compose

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

LiveData 转换地图功能

最近我一直在学习 LiveData 上的转换方法

我知道我们可以使用maporswitchMap方法来转换实时数据。假设我们有类似下面的 Player 数据类

data class Player(val name: String, val score: Int = 0)
Run Code Online (Sandbox Code Playgroud)

我们使用map方法将player livedata转换为playerName livedata

val player: LiveData<Player> = ...

val playerName: LiveData<String> = 
    Transformations.map(player) { it.name }
Run Code Online (Sandbox Code Playgroud)

我的问题是,在观察者函数中执行它有什么区别,因为它们都在主线程中运行?我的意思是,如果我们想获取playerName,那么我们也可以在观察者函数中获取它。为什么我们声明第二个 LiveData 实例来获取它

我从本指南中获取了示例代码:https://proandroiddev.com/livedata-transformations-4f120ac046fc

kotlin android-livedata mutablelivedata mediatorlivedata android-livedata-transformations

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

CoroutineScope 与 SupervisorJob 对比 SupervisorScope

最近我一直在详细学习协程,据我所知,SupervisorJob()如果协程的子级之一由于某种原因被取消,我们有机会不取消所有子级。

据说以 开头的协程coroutineScope如果失败了,会取消所有子协程,但以 开头的协程supervisorScope只会取消失败的子协程

我想知道是否可以CoroutineScope通过添加SupervisorJobCoroutineContext 来改变行为,但我无法获得预期的行为,这是我没有得到的

预期行为 - getData1() 和 getData3() 结果被打印*

实际: - getData2() 取消所有协程

fun main() = runBlocking {

    val exceptionHandler = CoroutineExceptionHandler { coroutineContext, throwable ->
        println(throwable)
    }

    val customScope = CoroutineScope(SupervisorJob() + exceptionHandler)


    customScope.launch {
        launch {
            getData1().also { println(it) }
        }
        launch {
            getData2().also { println(it) }
        }
        launch {
            getData3().also { println(it) }
        }
     }.join()

}


private suspend fun getData1(): String? {
    delay(1000) …
Run Code Online (Sandbox Code Playgroud)

android kotlin kotlin-coroutines coroutinescope

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