小编srv*_*rvy的帖子

如何在android jetpack compose Row中自定义左/右对齐项目

我想要 Jetpack Compose 中的一行,如下所示:

----------------------------------------------------
| A |   B   |                                  | C |
----------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我希望 A 和 B 左对齐,彼此相邻,C 在最后。不知道现有的横向排列是否有办法做到这一点。我还认为,嵌套行可能不是一个好主意。实现这一目标的最佳方法是什么?

android android-jetpack material-components-android android-jetpack-compose

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

如何删除或减少 Jetpack compose OutlinedButton 中的填充

无法减少 OutlinedButton 中的巨大填充。尝试了 contentPadding、修饰符填充等。无法减少文本“apple”的填充。任何想法?我应该为此使用任何其他类型的组合组件吗?

OutlinedButton(     
    onClick = {},       
    border = BorderStroke(1.dp, Color.White),
    shape = RoundedCornerShape(12.dp),
    contentPadding = PaddingValues(0.dp),
    modifier = Modifier 
        .background(bgColor)
        .height(24.dp)      
        .padding(all = 0.dp),
    colors = ButtonDefaults.outlinedButtonColors(backgroundColor = bgColor)) {
        Text("apple",   
            color = Color.White,
            style = MaterialTheme.typography.body2,
            modifier = Modifier.height(10.dp).padding(vertical = 0.dp), //.background(bgColor),
        )               
    }
Run Code Online (Sandbox Code Playgroud)

在 @liveAnyway 的回答(谢谢!)之后更新,这似乎有帮助。之后,我也删除了 OutlinedButton 的高度 - 理想情况下我希望它像“wrap-content”一样。进行更改后,我仍然可以看到填充。底线我不想指定任何绝对高度,以便它可以使用系统设置中的不同字体大小。

Row(modifier = Modifier.padding(vertical = 12.dp)) {
    OutlinedButton( 
        onClick = {}, 
        border = BorderStroke(1.dp, Color.White),
        shape = RoundedCornerShape(18.dp),
        contentPadding = PaddingValues(0.dp),
        modifier = Modifier
            .background(bgColor)
            .padding(all = …
Run Code Online (Sandbox Code Playgroud)

android material-ui android-jetpack-compose android-jetpack-compose-button

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

如何在 Jetpack Compose 中强制某些屏幕的方向?

有了jetpack compose navigation,我想它可能会成为一个单一的活动应用程序。如何仅对某些可组合项(屏幕)强制定向?假设我只想在播放视频而不是其他屏幕时强制横向?没有导航,可以在清单中声明方向,但使用导航,我们可以在可组合级别指定这一点?

android android-jetpack-navigation android-jetpack-compose

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

android 编写文本字段如何在外部触摸时关闭键盘

这是一个在全屏列中包含 TextField 的行。onFocusChanged当点击文本字段(进入活动状态)以及按下键盘上的“完成”按钮时,将调用回调。但当我在 TextField 外部点击时,处理程序不会被调用。所以我无法关闭键盘。任何想法?

val (nameText, setNameText) = remember { mutableStateOf("")}
val keyboardController = LocalSoftwareKeyboardController.current
val focusRequester = FocusRequester()

Column(
    modifier = Modifier
        .fillMaxWidth()
        .fillMaxHeight()
        .padding(10.dp)
) { 
    Row(
        modifier = Modifier
            .fillMaxWidth(),
        horizontalArrangement = Arrangement.SpaceAround
    ) {
        TextField(
            value = nameText,
            onValueChange = setNameText,
            modifier = Modifier
                .focusRequester(focusRequester)
                .onFocusChanged {
                    if (!it.isFocused) {
                        keyboardController?.hide()
                    }
                }
                .padding(horizontal = 0.dp, vertical = 0.dp)
                .height(50.dp)
                .fillMaxWidth(),
            KeyboardOptions(
                keyboardType = KeyboardType.Text,
                imeAction = androidx.compose.ui.text.input.ImeAction.Done
            ),
            keyboardActions = KeyboardActions(onDone = …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

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

如何阻止UIWebView在phonegap 3.0中垂直弹跳

已尝试过此论坛和其他论坛的许多建议,包括将"DisallowOverscroll"设置为"true".这有可能在phonegap 3.0中被打破吗?

ios cordova

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

修改列表时,Jetpack composecollectAsState() 未收集热流

当我使用 时collectAsState()collect {}仅在传递新列表时触发,而不是在修改和发出列表时触发。

查看模型

@HiltViewModel
class MyViewModel @Inject constructor() : ViewModel() {
    val items = MutableSharedFlow<List<DataItem>>()
    private val _items = mutableListOf<DataItem>()

    suspend fun getItems() {
        _items.clear()

        viewModelScope.launch {
            repeat(5) {
                _items.add(DataItem(it.toString(), "Title $it"))
                items.emit(_items)
            }
        }

        viewModelScope.launch {
            delay(3000)
            val newItem = DataItem("999", "For testing!!!!")
            _items[2] = newItem
            items.emit(_items)
            Log.e("ViewModel", "Updated list")
        }
    }
}

data class DataItem(val id: String, val title: String)
Run Code Online (Sandbox Code Playgroud)

可组合的

@Composable
fun TestScreen(myViewModel: MyViewModel) {
    val myItems by myViewModel.items.collectAsState(listOf())

    LaunchedEffect(key1 = true) …
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-coroutines android-jetpack-compose kotlin-flow android-jetpack-compose-list

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

从 Android 可组合函数获取 View 对象

我需要重写一个方法并返回可组合函数内的视图。有没有办法让 View 脱离另一个 Composable 函数?

我需要这样的东西,其中 getInfoContents() 将返回一个仅带有文本的视图。下面的代码显然无法编译。我总是可以扩充 XML 布局,但想要返回由可组合函数生成的视图。

    AndroidView({ mapView }) {
        CoroutineScope(Dispatchers.Main).launch {
            val map = mapView.awaitMap()

            map.setInfoWindowAdapter(object : GoogleMap.InfoWindowAdapter {
                override fun getInfoContents(p0: Marker): View? {
                    return AndroidView(factory = {
                        Text(text = "Hello")
                    }).toView() ... or something like this
                }

                override fun getInfoWindow(p0: Marker): View? {
                    TODO("Not yet implemented")
                }
            })
        }
    }
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-jetpack-compose

9
推荐指数
0
解决办法
1948
查看次数

如何使用Android Room进行单行查询

如何使用带有RxJava的Android Room进行单行查询?我能够查询项目列表,没有问题.在这里,我想查找是否存在特定行.根据文档,看起来我可以返回Single并检查EmptyResultSetException异常,如果不存在行.

我可以有类似的东西:

@Query("SELECT * FROM Users WHERE userId = :id LIMIT 1")
Single<User> findByUserId(String userId);
Run Code Online (Sandbox Code Playgroud)

我该如何使用此电话?看起来有一些onError/onSuccess但在Single <>上找不到那些方法.

usersDao.findByUserId("xxx").???
Run Code Online (Sandbox Code Playgroud)

任何工作的例子都会很棒!

android rx-java2 android-room

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

如何在 Jetpack Compose 中使用 SharedFlow

通过状态流我可以使用

val items by myViewModel.items.collectAsState()
Run Code Online (Sandbox Code Playgroud)

我想共享流不能以这种方式使用。共享流是否适用于 Compose?

android kotlin-coroutines android-jetpack-compose kotlin-flow

7
推荐指数
2
解决办法
7698
查看次数

Android Compose 中 BottomSheetScaffold 中 TopAppBar 的透明背景

如何使 BottomSheetScaffold 中的 TopAppBar 透明?我希望汉堡图标和应用程序名称覆盖在下面的地图上。使用任何 alpha 值将背景颜色设置为透明不起作用。使用 compose 版本 1.0.5。

在此输入图像描述

这是脚手架代码:

BottomSheetScaffold(
    topBar = {
        TopAppBar(
            title = { Text("App") },
            backgroundColor = Color.Transparent.copy(alpha = 0.1f),
            navigationIcon = {
                IconButton(onClick = {
                    scope.launch {
                        bottomSheetScaffoldState.drawerState.apply {
                            if (isClosed) open() else close()
                        }
                    }
                }) {
                    Icon(Icons.Default.Menu, "Open/Close menu")
                }
            }
        )
    },
    scaffoldState = bottomSheetScaffoldState,
    drawerGesturesEnabled = false,
    drawerContent = {
        DrawerContent(actions) {
            scope.launch {
                bottomSheetScaffoldState.drawerState.apply {
                    close()
                }
            }
        }
    },
    floatingActionButton = {
        FloatingActionButton(
            onClick = {
            }, …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-jetpack-compose

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