一段时间以来,我一直在try 将按钮从底部到中心按列对齐,但我不能成功.
我的密码是:
NutritionHabitsScreen个
@Composable
fun NutritionHabitsRoute(
navHostController: NavHostController,
sharedViewModel: SharedViewModel,
viewModel: NutritionHabitsViewModel = hiltViewModel()
) {
val state by viewModel.state.collectAsState()
NutritionHabit(
navHostController = navHostController,
sharedViewModel = sharedViewModel,
state = state,
buttonEnabled = viewModel::buttonEnabled
)
}
@Composable
fun NutritionHabit(
navHostController: NavHostController,
sharedViewModel: SharedViewModel,
state: NutritionHabitsScreenState,
buttonEnabled: (MutableList<Int>, MutableList<Int>) -> Unit
) {
val firstChoicesItems = sharedViewModel.registerItems?.choices?.get(0)?.items
val secondChoicesItems = sharedViewModel.registerItems?.choices?.get(1)?.items
var firstSelectedIndexes = remember { mutableListOf<Int>() }
var secondSelectedIndexes = remember { mutableListOf<Int>() }
Scaffold(
topBar = { BackPopUp(navController = navHostController, route = null) },
backgroundColor = Color.Transparent
) {
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
) {
CustomText(
padding = 15.dp,
text = sharedViewModel.registerItems!!.choices[0].title ?: "",
textStyle = MaterialTheme.typography.h3
)
firstChoicesItems?.let {
it.forEachIndexed { index, element ->
CustomButton(
selectedIndexes = firstSelectedIndexes,
index = index,
borderDp = 2.dp,
textPadding = 15.dp,
topPadding = 5.dp,
bottomPadding = 5.dp,
startPadding = 15.dp,
endPadding = 15.dp,
text = firstChoicesItems[index].key ?: "",
selectedBorderColor = DefaultDYTColor,
unselectedBorderColor = MaterialTheme.colors.grayColor,
onSelected = { list ->
firstSelectedIndexes = list
buttonEnabled(firstSelectedIndexes, secondSelectedIndexes)
}
)
}
}
CustomText(
padding = 15.dp,
text = sharedViewModel.registerItems!!.choices[1].title ?: "",
textStyle = MaterialTheme.typography.h3
)
secondChoicesItems?.let {
it.forEachIndexed { index, items ->
CustomButton(
selectedIndexes = secondSelectedIndexes,
index = index,
borderDp = 2.dp,
textPadding = 15.dp,
topPadding = 5.dp,
bottomPadding = 5.dp,
startPadding = 15.dp,
endPadding = 15.dp,
text = secondChoicesItems[index].key ?: "",
selectedBorderColor = DefaultDYTColor,
unselectedBorderColor = MaterialTheme.colors.grayColor,
onSelected = { list ->
secondSelectedIndexes = list
buttonEnabled(firstSelectedIndexes, secondSelectedIndexes)
}
)
}
}
DYTLoginAndContinueButton(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp),
text = stringResource(id = R.string.devam),
navController = navHostController,
route = null,
enabled = state.buttonEnabled
) {}
}
}
}
My Custom button个
@Composable
fun DYTLoginAndContinueButton(
modifier:Modifier,
text: String,
navController: NavController?,
route: String?,
enabled: Boolean,
onClick: () -> Unit
) {
Button(
onClick = {
onClick()
if(navController != null && route !=null)
navController.navigate(route)
},
modifier = modifier,
enabled = enabled,
elevation = ButtonDefaults.elevation(0.dp, 0.dp),
colors = ButtonDefaults.buttonColors(backgroundColor = DefaultDYTColor),
shape = RoundedCornerShape(25.dp)
) {
Text(
modifier = Modifier.padding(8.dp),
text = text,
textAlign = TextAlign.Center,
style = MaterialTheme.typography.button,
color = Color.White
)
}
}
如您所见,列中有多个组件,我在底部DYTLoginAndContinueButton处创建了一个自定义按钮,我希望将其与屏幕的底部中心对齐.我try 了一些东西,当我成功的时候就发生了,但由于某种原因,按钮在小屏幕上看不到,我不明白为什么.这是我的代码的最新版本.目前,在大屏幕上,它似乎没有在屏幕底部的中心对齐,在小屏幕上,它似乎被定位到了最后,因为屏幕已经很小了.我希望它在小屏幕和大屏幕上都能正确地出现在屏幕底部的中心.有谁有建议吗?