gpt4 book ai didi

android - Android Jetpack Compose 中 LinearLayout 的替代品是什么?

转载 作者:行者123 更新时间:2023-12-05 00:09:25 25 4
gpt4 key购买 nike

我可以用什么代替 LinearLayout在 Android Jetpack Compose 中?如果有一个示例说明如何用新的 API 替换常见的 LinearLayout 功能,那就太好了。

最佳答案

LinearLayout对应RowColumn Compose 中的可组合项。

如果您要显示大量项目,请查看 LazyRowLazyColumn仅显示可见项目,如 RecyclerView可以,但您可以像使用 Row 和 Column 一样简单地使用它们。参见 What is the Jetpack Compose equivalent of RecyclerView or ListView?举个例子。

让我们将 LinearLayout API 与行和列进行比较:


android:orientation (线性布局)
正如您可能猜到的那样 <LinearLayout android:orientation="vertical" ...>相当于Column {}<LinearLayout android:orientation="horizontal" ...>Row {}


android:gravity (线性布局)
horizontalAlignment & verticalArrangement Column 的参数和 verticalAlignment & horizontalArrangement对于Row .例如:

<LinearLayout ...
android:orientation="vertical"
android:gravity="end|center">
...
</LinearLayout>

相当于

Column(
...
horizontalAlignment = Alignment.End,
verticalArrangement = Arrangement.Center
) { ... }

android:layout_gravity (LinearLayout.LayoutParams)
参见行的 align和列的 align如果已设置,则修饰符会覆盖容器对齐方式。还有更高级的修饰符,如 Row 的 alignByBaseline ,请参阅文档以获取更多详细信息。例如:

<LinearLayout ...
android:orientation="vertical"
android:gravity="end">

<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="first" />

<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="start"
android:text="second" />

</LinearLayout>

等于

Column(
...
horizontalAlignment = Alignment.End,
) {
// this item is aligned to the end according to the column's alignment
Text("first")
// but this one is aligned to the start because it overrides the alignment
Text("second", modifier = Modifier.align(Alignment.Start))
}

android:layout_weight (LinearLayout.LayoutParams)
参见行的 weight和列的 weight修饰符。例如

<LinearLayout android:orientation="horizontal" ...>
<TextView
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1"
android:text="first" />
<TextView
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="2"
android:text="second" />
</LinearLayout>

等于

Row {
Text("first", modifier = Modifier.weight(1.0f))
Text("second", modifier = Modifier.weight(2.0f))
}

关于android - Android Jetpack Compose 中 LinearLayout 的替代品是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65707293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com