Jetpack Compose Images, поскольку кнопки сильно меняют размер при нажатииAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Jetpack Compose Images, поскольку кнопки сильно меняют размер при нажатии

Сообщение Anonymous »

Я изучаю Jetpack Compose, поэтому дайте мне знать, если я делаю что-то действительно странное и есть лучший способ достичь своей цели, не вызывая у себя этой проблемы.
В главном меню у меня есть логотип и две «кнопки»: «Новый лист» и «Продолжить». Я не использую настоящую кнопку, потому что хочу строго контролировать весь внешний вид кнопки с помощью некоторых векторных изображений для нормального и нажатого состояний. Итак, я использую изображение с обработчиком onClick и модификатором pointerInput, который регулирует, какой объект рисования отображается.
Проблема в том, что когда я нажимаю одну из кнопок, они появляются ДИКО. маленький, и я понятия не имею, почему. Я подтвердил, что как обычная, так и сжатая версии векторных рисунков имеют одинаковый размер (280x50 dp). Вот несколько скриншотов того, как это выглядит до, при нажатии и после нажатия:
Изображение

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

Scaffold(modifier = Modifier.fillMaxSize()) { padding ->

Box(modifier = Modifier
.fillMaxSize()
.background( /* bg gradient */ )
.padding(padding)
) {

Column(
horizontalAlignment = CenterHorizontally,
verticalArrangement = Arrangement.Center,
modifier = Modifier.fillMaxSize()
) {

Image( /* logo */ )

Spacer( /* height */ )

val buttonWidthFraction = 0.75f
ImageButton(
normal = R.drawable.button_new_sheet_normal,
pressed = R.drawable.button_new_sheet_active,
onClick = {
navController.navigate(Nav.newsheet)
},
modifier = Modifier
.shadow(
elevation = 100.dp,
ambientColor = Color.Black,
)
.width(logoImageWidth * buttonWidthFraction)
)

Spacer( /* height */ )

ImageButton( /* other other button, same config */ )

}
}
}

@Composable
fun ImageButton(
@DrawableRes normal: Int,
@DrawableRes pressed: Int,
modifier: Modifier = Modifier,
isdisabled: Boolean = false,
onClick: () -> Unit,
) {
var isPressed by remember { mutableStateOf(false) }
val coroutineScope = rememberCoroutineScope()

Image(
painter = painterResource(if (isPressed) pressed else normal),
contentScale = ContentScale.FillWidth,
modifier = modifier
.fillMaxWidth()
.alpha(if (isdisabled) 0.5f else 1f)
.pointerInput(Unit) {
detectTapGestures(
onPress = {
coroutineScope.launch {
isPressed = true
tryAwaitRelease() // Wait for the release of the button
isPressed = false
}
onClick()
}
)
}
)
}
Когда я нажимаю кнопку, приложение переходит на экран игры, но, как вы можете видеть, кнопки становятся невероятно маленькими, и я понятия не имею, почему.

Подробнее здесь: https://stackoverflow.com/questions/790 ... en-clicked
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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