在 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 的任何修饰符也会更改所有子视图。
有没有任何文件可以非常清楚地说明这一点?我可以提供任何文档的链接吗?
谢谢你!
当前代码
@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
android android-jetpack android-jetpack-compose android-jetpack-compose-animation
我对 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\npublic 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) 我想让具有背景颜色的父级的高度适合文本内容的高度,而不是已偏移的图像的高度。
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)
SharedPreferences(尽管有很多缺点)的优点是可以访问存储数据的 XML。
Jetpack DataStore 在哪里存储数据以及文件是否可访问?
android android-preferences sharedpreferences android-jetpack-datastore
我是 Android Jetpack Compose 的新手。我想使用可观察的数据,当数据发生变化时,用户界面会自动更新。我遇到的解决方案有两种:
@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 android-jetpack-compose android-jetpack-compose-canvas
我是 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 ×9
android-jetpack-compose-animation ×2
kotlin ×2
android-jetpack-compose-canvas ×1
height ×1
offset ×1