小编Abh*_*bhi的帖子

Jetpack Compose - 修饰符参数是否应该仅应用于外部/最顶层视图?

在 jetpack compose 中,当将修改器传递到可组合项时,修改器是否应该仅应用于最外层视图,还是也应用于所有子视图?

这是一个简单的例子:

fun SomeComposable(modifier: Modifier = Modifier) {
    Column(modifier = modifier) {
        Text(modifier = modifier.extraModifiersIfNeeded(), text = "Text")
        Text(modifier = modifier.extraModifiersIfNeeded(), text = "Text")
        Text(modifier = modifier.extraModifiersIfNeeded(), text = "Text")
    }
}
Run Code Online (Sandbox Code Playgroud)

我最初认为这是不正确的,因为传递到 SomeComposable 的任何修饰符也会更改所有子视图。

有没有任何文件可以非常清楚地说明这一点?我可以提供任何文档的链接吗?

谢谢你!

android android-jetpack-compose

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

设置文本颜色动画时如何减少重组?

当前代码

@Composable
fun TextDemo() {
    var selectedIndex by remember {
        mutableIntStateOf(0)
    }
    Row {
        TabText(
            text = "First",
            isSelected = selectedIndex == 0,
            onClick = {
                selectedIndex = 0
            },
        )
        TabText(
            text = "Second",
            isSelected = selectedIndex == 1,
            onClick = {
                selectedIndex = 1
            },
        )
    }
}

@Composable
fun TabText(
    text: String,
    isSelected: Boolean,
    onClick: () -> Unit,
) {
    val tabTextColor by animateColorAsState(
        targetValue = if (isSelected) {
            Color.Red
        } else {
            Color.Black
        },
        animationSpec = …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose jetpack-compose-animation android-jetpack-compose-animation

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

如何在 Jetpack Compose 中实现前后动画?

我已经使用了重量或改变了无限动画的宽度,但这不是下面gif中显示的效果。如何在 Jetpack Compose 中实现它?

android android-jetpack android-jetpack-compose android-jetpack-compose-animation

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

如何使用bundle将数据从Activity传递到Fragment

我对 Android 完全陌生,我必须提交这个应用程序才能结束我的大学学位,但我遇到了这个问题,我的片段使我的整个应用程序崩溃。

\n\n

为了解释我到目前为止所做的事情是,我有一个 LoginActivity,其中我通过 Intent 发送了 userId,并且在我的 DashboardActivity 上有当前用户的 id(并且我可以显示它),但是在 DashboardActivity 中我有一个底部导航到我的 FormFragment 和 DataFragment 的导航栏。

\n\n

现在,我希望将当前用户的 userId 值从 DashboardActivity 传递到我的 DataFragment,以便我可以根据 userId 动态显示用户数据。

\n\n

因此,我发现最好的选择是使用捆绑包,但我现在不知道为什么(因为我对此完全陌生)每次从 FormFragment 切换到 DataFragment 时我的应用程序都会崩溃。

\n\n

你能帮助我吗?我很绝望xD

\n\n

这是我的 DashboardActivity 代码:

\n\n
public class PainelActivity extends AppCompatActivity {\n\n    private Button buttonLogout;\n    private TextView textViewId;\n    private Object DashboardFragment;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_painel);\n        BottomNavigationView navView = findViewById(R.id.nav_view);\n        // Passing each menu ID as a set of Ids because each\n        // …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

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

Jetpack Compose:如何在具有偏移内容的同时包裹父级的高度

我想让具有背景颜色的父级的高度适合文本内容的高度,而不是已偏移的图像的高度。

Box(
    modifier = Modifier
        .padding(10.dp)
        .background(Color.Cyan, shape = RoundedCornerShape(8.dp))
        .clickable { }
) {
    Image(
        modifier = Modifier
            .width(224.dp)
            .align(alignment = Alignment.TopEnd)
            .offset(y = -88.dp, x = 50.dp),
        painter = painterResource(id = R.drawable.ic_pray),
        contentDescription = null,
    )
    Box(...)
}
Run Code Online (Sandbox Code Playgroud)

截屏

height android offset android-jetpack-compose

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

首选项数据存储 (Jetpack) 存储在哪里?

SharedPreferences(尽管有很多缺点)的优点是可以访问存储数据的 XML。

Jetpack DataStore 在哪里存储数据以及文件是否可访问?

android android-preferences sharedpreferences android-jetpack-datastore

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

mutableStateof 和 livedata&viewmodel 有什么区别?

我是 Android Jetpack Compose 的新手。我想使用可观察的数据,当数据发生变化时,用户界面会自动更新。我遇到的解决方案有两种:

  1. 可变状态
@Composable
fun test(){
   var list = mutableStateListOf<String>();
   LazyColumn(
            modifier = Modifier
                .fillMaxSize()
                .background(Color(0xDE, 0xDE, 0xDE, 0xFF))
                .clickable(onClick = {
                   //when i click the whole list, it delete the last element of list, and then automatically update view
                   list.removeLast()
            }),
            verticalArrangement = Arrangement.spacedBy(10.dp)
        ) {
            items(list) {
                Text(text = it)
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

2.LiveData&viewModel

class TermModel : ViewModel() {
   
    private val termList = mutableStateListOf<Term>()
    private val termListLiveData: MutableLiveData<List<Term>> = MutableLiveData()
    
    fun removeLast(){
     //omit removing logic …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose

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

0
推荐指数
1
解决办法
1029
查看次数

jetpack compose:主题颜色覆盖不适用于 api 31 及更高版本,但适用于 api 30 及更低版本

我是 jetpack compose 的新手,我一直在尝试覆盖应用程序中的背景和表面颜色以查看效果,但它仅适用于我的 api 30 及以下虚拟设备,但在我的物理设备(即 api 31)上没有任何作用以及 API 30 以上的其他虚拟设备,我使用的是material3

private val DarkColorScheme = darkColorScheme(
    primary = Purple80,
    secondary = PurpleGrey80,
    tertiary = Pink80,
    surface = Color(0XFF0C134F),
    background = Color(0XFF0C134F),
    onSurface = Color(0xffffffff)
)

private val LightColorScheme = lightColorScheme(
    primary = Purple40,
    secondary = PurpleGrey40,
    tertiary = Pink40,
    surface = Color(0XFFB6EAFA),
    background = Color(0XFFB6EAFA),

    /* Other default colors to override
    background = Color(0xFFFFFBFE),
    surface = Color(0xFFFFFBFE),
    onPrimary = Color.White,
    onSecondary = Color.White,
    onTertiary = Color.White,
    onBackground = Color(0xFF1C1B1F), …
Run Code Online (Sandbox Code Playgroud)

android kotlin material-design android-jetpack-compose

0
推荐指数
1
解决办法
1209
查看次数