我想要 Jetpack Compose 中的一行,如下所示:
----------------------------------------------------
| A | B | | C |
----------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我希望 A 和 B 左对齐,彼此相邻,C 在最后。不知道现有的横向排列是否有办法做到这一点。我还认为,嵌套行可能不是一个好主意。实现这一目标的最佳方法是什么?
android android-jetpack material-components-android android-jetpack-compose
无法减少 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
有了jetpack compose navigation,我想它可能会成为一个单一的活动应用程序。如何仅对某些可组合项(屏幕)强制定向?假设我只想在播放视频而不是其他屏幕时强制横向?没有导航,可以在清单中声明方向,但使用导航,我们可以在可组合级别指定这一点?
这是一个在全屏列中包含 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) 已尝试过此论坛和其他论坛的许多建议,包括将"DisallowOverscroll"设置为"true".这有可能在phonegap 3.0中被打破吗?
当我使用 时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
我需要重写一个方法并返回可组合函数内的视图。有没有办法让 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) 如何使用带有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)
任何工作的例子都会很棒!
通过状态流我可以使用
val items by myViewModel.items.collectAsState()
Run Code Online (Sandbox Code Playgroud)
我想共享流不能以这种方式使用。共享流是否适用于 Compose?
android kotlin-coroutines android-jetpack-compose kotlin-flow
如何使 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 ×8
kotlin-flow ×2
android-jetpack-compose-button ×1
android-jetpack-compose-list ×1
android-room ×1
cordova ×1
ios ×1
kotlin ×1
material-components-android ×1
material-ui ×1
rx-java2 ×1