我正在嘗試研究 android jetpack compose,但在我的代碼中發現了一些錯誤。
Modifier有.align屬性但它不起作用。
填充、剪輯等其他修飾符作業正常。
我用
Android Studio Arctic Fox | 2020.3.1 Patch 3
Build #AI-203.7717.56.2031.7784292, built on October 1, 2021
Runtime version: 11.0.10 0-b96-7249189 amd64
Kotlin 1.6.0
我的完整代碼:
package com.joung.week2_layout
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.joung.week2_layout.ui.theme.Week2LayoutTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Week2LayoutTheme {
// A surface container using the 'background' color from the theme
Surface(color = MaterialTheme.colors.background) {
NameTag()
}
}
}
}
}
@Composable
fun NameTag() {
Row{
Surface(
modifier = Modifier
.size(50.dp)
.padding(all = 4.dp),
shape = CircleShape,
color = MaterialTheme.colors.onSurface.copy(alpha = 0.2f)
) {
// image url
}
}
Column (
modifier = Modifier
.padding(all = 8.dp)
.align(Alignment.CenterVertically)
.clip(RoundedCornerShape(4.dp))
){
Text(text = "Joung", fontWeight = FontWeight.Bold)
CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) {
Text(text = "PHONE NUMBER", style = MaterialTheme.typography.body2)
}
}
}
@Preview(showBackground = true)
@Composable
fun CardPreview() {
Week2LayoutTheme {
NameTag()
}
}
uj5u.com熱心網友回復:
并非所有修飾符都可以與任何可組合一起使用。它們特定于可組合的型別或“范圍”。該align修飾符不能與柱可組合使用。要在列中對齊您的內容,請使用verticalArrangement或horizontalAlignment引數。要垂直居中,請使用verticalArrangement = Arrangement.Center。此外,您沒有設定列的大小。你應該設定這個。在本例中,我將其設定為fillMaxSize. 最后,順便提一下,您應該只使用 Kotlin 的官方版本。目前是 1.5.31 而不是 1.6。如果 Google 尚未使用較新版本,則可能會導致重大問題:
Column (
verticalArrangement = Arrangement.Center,
modifier = Modifier
.fillMaxSize()
.padding(all = 8.dp)
.clip(RoundedCornerShape(4.dp))
){
}
}
uj5u.com熱心網友回復:
align()是在內部定義的,RowScope或者ColumnScope這基本上意味著您必須有一個父級Row或Column包含align正在使用的可組合物,以便它可以與父級對齊。此外,Column對齊將在水平方向,反之亦然。
我不確定與的區別,align()但有一個horizontalAlignment(用于列)和horizontalArrangement(用于行)屬性以及為您提供幫助。例如:
Column {
Column(
modifier = Modifier
.padding(all = 8.dp).clip(RoundedCornerShape(4.dp)).align(Alignment.CenterHorizontally),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(text = "Joung", fontWeight = FontWeight.Bold)
CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) {
Text(text = "PHONE NUMBER", style = MaterialTheme.typography.body2)
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363813.html
標籤:安卓 科特林 安卓布局 android-jetpack-compose 喷气背包
上一篇:Androidcenter_vertical重力不起作用
下一篇:二叉搜索樹,中序橫向回傳泛型陣列
