相关疑难解决方法(0)

如何在 Jetpack Compose 中添加保证金?

您究竟如何才能在 中添加 Margin Jetpack Compose

我可以看到有一个Modifier用于填充,Modifier.padding(...)但我似乎无法找到一个用于边距的,或者我是瞎子吗?

请有人指导我。

非常感谢。

android android-jetpack-compose

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

如何在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 Compose - 可滚动列和夹到填充

我有一个带有可滚动垂直列的简单屏幕。它包含一些文本和图像。

 Column(
   modifier = Modifier
     .fillMaxWidth()
     .padding(16.dp)
     .verticalScroll(rememberScrollState()),
 ) {
      ...
   }
Run Code Online (Sandbox Code Playgroud)

内容是可滚动的,但它会剪切到定义的填充。这意味着当您滚动时,您可以看到过度滚动阴影不会填充整个屏幕,但它会绑定到填充。看起来真的很糟糕:

在此输入图像描述

在 XML 世界中,您可以用来android:clipToPadding="false"“填充”容器。Compose 中有类似的东西吗?

android-jetpack-compose

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

如何删除文本按钮的填充?

我正在尝试删除填充,TextButton但它不起作用。

TextButton(
    onClick = {},
    modifier = Modifier.padding(0.dp)
) {
    Text(
        " ${getString(R.string.terms_and_conditions)}",
        color = MaterialTheme.colors.primary,
        fontFamily = FontFamily(Font(R.font.poppins_regular)),
        fontSize = 10.sp,
    )
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过在属性中设置height和但填充仍然存在sizeModifier

android kotlin android-jetpack-compose android-compose-button android-jetpack-compose-button

15
推荐指数
3
解决办法
8719
查看次数

是否可以将喷气背包中的一排边缘倒圆?

这就是我想要实现的目标:

这就是我想做的

因此,我连续创建了 2 个圆形按钮,并根据是否选择它们提供了不同的背景颜色。目标是创建一种选项卡/切换的错觉。

未选中的按钮将具有与该行的背景颜色相同的颜色。不幸的是,由于行是矩形形状,因此在拐角处有残留空间,但仍然显示背景颜色。

这就是我得到的

如何避免这种情况

这是我的按钮代码

val cornerRadius = 20.dp

var selectedIndex by remember { mutableStateOf(0)}

val configuration = LocalConfiguration.current
val screenWidth = configuration.screenWidthDp.dp

val items = listOf(

    OutlinedButton(onClick = { /*TODO*/ }) {

    },

    OutlinedButton(onClick = { /*TODO*/ }) {

})

Row(
    modifier = Modifier

        .padding(top = 8.dp)
        .wrapContentHeight()

        .width(screenWidth).background(color = Color.Gray).clip(shape = RoundedCornerShape(20.dp))
) {
  //  Spacer(modifier = Modifier.weight(1f))

        items.forEachIndexed { index, item ->

            OutlinedButton(modifier = Modifier
                .wrapContentHeight()
                .width(screenWidth/2),


                shape = when (index) {
                    // left outer button …
Run Code Online (Sandbox Code Playgroud)

user-interface row button android-jetpack-compose

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

Compose RoundedCornerShape、填充和背景颜色未按预期工作

期待

在此输入图像描述

现实

在此输入图像描述

(请忽略具体颜色;外部背景颜色为紫色,内部背景颜色为红色)

编写代码

@Preview
@Composable
fun MyCta() {
    MaterialTheme() {
        Box(
            modifier = Modifier
                .clip(RoundedCornerShape(50))
                .padding(32.dp)
                .background(MaterialTheme.colors.primary)
        ) {
            Text(
                "Tap to continue",
                Modifier
                    .padding(8.dp)
                    .background(Color.Red)
                ,
                color = MaterialTheme.colors.onPrimary
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的期望落空了吗?为什么?

android-jetpack-compose

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

如何通过填充使 Row 组件整体可点击?

我有一个 Row 组件,由于填充修饰符的原因,该组件在整个区域都不可单击。如何使该组件在整个区域上可单击并具有相同的填充效果?

@Composable
fun UserRow() {
        Row(
            verticalAlignment = Alignment.CenterVertically,
            modifier = Modifier
                .fillMaxWidth()
                .padding(16.dp)
                .clickable {
                    /* ... */
                }
        ) {
            Icon(
                /* ... */
            )
            Text(
                /* ... */
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose

11
推荐指数
1
解决办法
2374
查看次数

如何在 Jetpack Compose 中删除 RadioButton 的填充?

我的 Jetpack Compose 应用程序中的 RadioButton 组件出现问题。我有一些带有文本的单选按钮,默认情况下有很多填充。我可以删除此填充或设置自定义填充以避免每个填充之间存在大量空间吗?

目前我有这个:

在此输入图像描述

我的代码是:

Column {
    MyEnum.values().filter { rb -> rb.visible }.forEach { rb ->
        Row(
            Modifier
                .fillMaxWidth()
                .padding(horizontal = 0.dp, vertical = 0.dp)
                .clickable(
                    interactionSource = interactionSource,
                    indication = null
                ) {
                    TODO()
                },
            verticalAlignment = Alignment.CenterVertically
        ) {
            RadioButton(
                selected = (rb.position == selectedOption),
                onClick = {
                    TODO()
                },
                colors = RadioButtonDefaults.colors(
                    selectedColor = DialogOutlinedTextFocus,
                    unselectedColor = DialogOutlinedTextUnfocus
                )
            )
    
            Text(
                text = stringResource(id = rb.idText),
                color = Color.Black,
                fontSize = 14.sp,
                modifier = …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose

9
推荐指数
1
解决办法
2958
查看次数

如何在 Jetpack Compose 中获取 onTouchEvent?

在正常情况下,我们可以有 onTouchEvent

    override fun onTouchEvent(event: MotionEvent?): Boolean {
        when (event?.action) {
            MotionEvent.ACTION_DOWN -> {}
            MotionEvent.ACTION_MOVE -> {}
            MotionEvent.ACTION_UP -> {}
            else -> return false
        }
        invalidate()
        return true
    }
Run Code Online (Sandbox Code Playgroud)

在 Jetpack Compose 中,我只能发现我们有tapGestureFilterin 修饰符,它只执行来自ACTION_UPonly的动作。

Modifier
    .tapGestureFilter { Log.d("Track", "Tap ${it.x} | ${it.y}") }
    .doubleTapGestureFilter { Log.d("Track", "DoubleTap ${it.x} | ${it.y}") }
Run Code Online (Sandbox Code Playgroud)

onTouchEventJetpack Compose是否有等价物?

android android-jetpack-compose

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

如何使用 Modifier.graphicsLayer{}.pointerInput() 实现自然的平移和缩放?

Modifier.graphicsLayer{}这与使用旋转或平移图像不同。我想要在屏幕上移动、旋转和缩放可组合项,而不是在固定位置。

我想要实现的目标如下图所示

在此输入图像描述

Modifier.graphicsLayer{}和的顺序Modifier.pointerInput()很重要。如果Modifier.pointerInput()放置在Modifier.graphicsLayer{}Composable 的触摸区域缩放、平移和旋转之后。

@Composable
private fun Test() {

    var offsetLeft by remember { mutableStateOf(Offset.Zero) }
    var offsetRight by remember { mutableStateOf(Offset.Zero) }

    var rotationLeft by remember { mutableStateOf(0f) }
    var rotationRight by remember { mutableStateOf(0f) }

    val modifierLeft = Modifier
        .border(3.dp, Color.Red)
        .graphicsLayer {
            translationX = offsetLeft.x
            translationY = offsetLeft.y
            rotationZ = rotationLeft
        }
        .border(2.dp, Color.Green)
        .pointerInput(Unit) {
            detectTransformGestures { centroid, pan, zoom, rotation ->
                offsetLeft += pan
                rotationLeft += rotation …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-jetpack-compose-gesture

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