Как сделать текст центрированным по вертикали в Android-сочинении?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как сделать текст центрированным по вертикали в Android-сочинении?

Сообщение Anonymous »

Я работаю над своим первым приложением, полностью разработанным с помощью Compose.
Мне нужно централизовать текст по вертикали с помощью компонента Compose Text(). В традиционной практике разработки Android я делал это с помощью свойства выравнивания. Text() Compose также имеет свойство выравнивания, но на данный момент его возможности ограничены (Alignment.Horizontal()разрешен только ), несмотря на то, что я заметил разные значения выравнивания в Text(), когда проводил исследование в Интернете. Аналогичный случай для Column() — он также имеет свойство выравнивания .wrapContentSize(), а также имеет ограничение на значения, которые могут быть здесь использованы, несмотря на быстрые исследования в Интернете, показывающие, что он может получать CenterVertically тоже.
Как вы добиваетесь такого визуального эффекта? Полный фрагмент кода приведен ниже
@ExperimentalUnitApi
@Composable
fun TripBookingContent(state: PassengerTripUiState.TripBookUiState) {
Log.d(App.TAG, "[screen] TripBookingContent")
val baselineGrid = dimensionResource(id = R.dimen.baseline_grid)
val mainPadding = dimensionResource(id = R.dimen.main_margin_compact)
var componentSpace = dimensionResource(id = R.dimen.component_space)
Column(
modifier = Modifier
.wrapContentHeight()
.fillMaxWidth()
.padding(
paddingValues = PaddingValues(
horizontal = mainPadding,
vertical = baselineGrid
)
)
) {
TripViewItem(
data = state.trip,
{},
modifier = Modifier.padding(vertical = baselineGrid)
)
Text(
text = stringResource(id = R.string.booking_screen_driver),
color = colorResource(id = R.color.white),
style = TextStyle(textIndent = TextIndent(firstLine = TextUnit(16F, TextUnitType.Sp))),
modifier = Modifier
.height(componentSpace)
.padding(start = baselineGrid)
.fillMaxWidth()
.background(color = colorResource(id = R.color.design_default_color_secondary_variant))
)
Log.d(App.TAG, "[state] state.driver - ${state}")
Log.d(App.TAG, "[state] state.driver.toDriver() - ${state.driver}")
DriverCardContent(data = state.driver)

Text(
text = stringResource(id = R.string.booking_screen_msg),
color = colorResource(id = R.color.white),
style = TextStyle(textIndent = TextIndent(firstLine = TextUnit(16F, TextUnitType.Sp))),
textAlign = TextAlign.Center,
modifier = Modifier
// .height(componentSpace)
.height(32.dp)
.padding(start = baselineGrid)
.fillMaxWidth()
.background(color = colorResource(id = R.color.colorPrimaryDark))
)
/**
* Disable book button at current (alfa version), for more details
* */
Button(
onClick = { /* no op */ },
modifier = Modifier
.alpha(0F)
.fillMaxWidth()
.padding(baselineGrid)
.height(dimensionResource(id = R.dimen.button_height)),
colors = ButtonDefaults.buttonColors(
backgroundColor = Color.Blue,
contentColor = Color.White
),
) {
Text(
text = stringResource(id = R.string.booking_screen_confirm_button),
modifier = Modifier.align(Alignment.CenterVertically),
fontWeight = FontWeight.Bold
)
}
}
}

ОБНОВЛЕНИЕ
Моим окончательным решением будет приведенное ниже. Мне нужно переместить отступы и фон на слой Box(), чтобы текст располагался по центру как по вертикали, так и по горизонтали.
Box(
contentAlignment = Alignment.Center,
modifier = Modifier
.height(32.dp)
.padding(start = baselineGrid)
.fillMaxWidth()
.background(color = colorResource(id = R.color.colorPrimaryDark))
) {
Text(
text = stringResource(id = R.string.booking_screen_msg),
color = colorResource(id = R.color.white),
style = TextStyle(textIndent = TextIndent(firstLine = TextUnit(16F, TextUnitType.Sp))),
textAlign = TextAlign.Center,
/* modifier = Modifier
// .height(componentSpace)
.height(32.dp)
.padding(start = baselineGrid)
.fillMaxWidth()
.background(color = colorResource(id = R.color.colorPrimaryDark))*/
)
}


Подробнее здесь: https://stackoverflow.com/questions/707 ... id-compose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»