Как отображать контент поверх topBar в пользовательском интерфейсе ComposeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как отображать контент поверх topBar в пользовательском интерфейсе Compose

Сообщение Anonymous »

Привет, я хочу добиться того, чтобы контент перекрывал верхнюю панель. В XML я использовал возвышение и отрицательное заполнение, и все работало нормально. Я изо всех сил пытаюсь сделать это в пользовательском интерфейсе Compose.
Что у меня есть на данный момент.

Код: Выделить всё

Scaffold(topBar = {
LargeTopAppBar(
colors = TopAppBarDefaults.largeTopAppBarColors(
containerColor = Color.Blue,
titleContentColor = Color.White
),
title = {
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
Text(
"Title here",
maxLines = 1,
overflow = TextOverflow.Ellipsis
)
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = spacedBy(8.dp),
modifier = Modifier.padding(10.dp)
) {
Icon(
modifier = Modifier.size(size = 16.dp),
painter = painterResource(R.drawable.ic_share_white),
contentDescription = stringResource(id = R.string.share)
)
Text(
stringResource(R.string.share),
maxLines = 1,
fontSize = 16.sp,
overflow = TextOverflow.Ellipsis
)
}
}
},
navigationIcon = {
IconButton(onClick = { /* doSomething() */ }) {
Image(
painter = painterResource(R.drawable.ic_back),
contentDescription = stringResource(id = R.string.back),
contentScale = ContentScale.Crop
)
}
},
actions = {
IconButton(onClick = { /* doSomething() */ }) {
Text(
text = "asd",
color = Color.White,
fontSize = 17.sp
)
}
},
scrollBehavior = scrollBehavior
)
}, content = { padding ->
var offset by remember { mutableStateOf(0f) }

Box(
modifier = Modifier
.padding(padding)
.fillMaxSize()
) {
Column(
verticalArrangement = Arrangement.SpaceEvenly,
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
.fillMaxSize()
.scrollable(
orientation = Orientation.Vertical,
state = rememberScrollableState { delta ->
offset += delta
delta
}
)
.padding(16.dp)
) {
Box(
modifier = Modifier
.fillMaxSize()
.shadow(
elevation = dimensionResource(
id = R.dimen.card_background_elevation
)
)
.background(
color = Color.White,
shape = RoundedCornerShape(size = 12.dp)
)
.padding(
all = dimensionResource(
id = R.dimen.card_background_top_margin
)
),

){
Text(text = "Hello World")
}

}
}
})
Чего я хочу (скриншот отличается от кода)
Изображение


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

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

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

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

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

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