Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

435
Visualizações
Composición de Jetpack: es posible configurar la altura de DropdownMenu para mostrar el siguiente elemento

Estoy usando DropdownMenu en Jetpack Compose, pero tengo el problema de que muchos usuarios no entienden que el menú contiene más información para que puedan desplazarse por la lista. Recibo mucho apoyo de que les faltan cosas de la lista. Especialmente en algunos idiomas, alinea muy bien la altura con un elemento, por lo que no ve que hay más elementos.

¿Hay alguna manera de configurar automáticamente la altura del menú desplegable (sin importar el idioma) para que muestre la mitad de un elemento en la parte inferior, para que los usuarios entiendan que pueden desplazarse por la lista?

Creo el menú usando estos modificadores:

 DropdownMenu( expanded = expanded, onDismissRequest = { expanded = false }, modifier = Modifier.requiredSizeIn(maxHeight = 330.dp) ) { items.forEachIndexed { index, item -> DropdownMenuItem(onClick = { onSelected(index, item.data) selectedIndex = index expanded = false }) { ... }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Estoy de acuerdo en que esta es una buena función, le sugiero que cree una solicitud de función en el rastreador de problemas de Compose.

Aquí hay una solución por ahora, puede obtener las alturas de sus elementos usando Modifier.onSizeChanged y actualizar su restricción maxHeight de esta manera:

 @Composable fun TestScreen( ) { var expanded by remember { mutableStateOf(true) } val items = List(10) { it.toString() } val itemHeights = remember { mutableStateMapOf<Int, Int>() } val baseHeight = 330.dp val density = LocalDensity.current val maxHeight = remember(itemHeights.toMap()) { if (itemHeights.keys.toSet() != items.indices.toSet()) { // if we don't have all heights calculated yet, return default value return@remember baseHeight } val baseHeightInt = with(density) { baseHeight.toPx().toInt() } // top+bottom system padding var sum = with(density) { DropdownMenuVerticalPadding.toPx().toInt() } * 2 for ((i, itemSize) in itemHeights.toSortedMap()) { sum += itemSize if (sum >= baseHeightInt) { return@remember with(density) { (sum - itemSize / 2).toDp() } } } // all items fit into base height baseHeight } DropdownMenu( expanded = expanded, onDismissRequest = { expanded = false }, modifier = Modifier.requiredSizeIn(maxHeight = maxHeight) ) { items.forEachIndexed { index, item -> DropdownMenuItem( onClick = { onSelected(index, item.data) selectedIndex = index expanded = false }, modifier = Modifier.onSizeChanged { itemHeights[index] = it.height } ) { Text("Hello $index", modifier = Modifier.padding(30.dp)) } } } } private val DropdownMenuVerticalPadding = 8.dp

ps DropdownMenuVerticalPadding es una constante Material tomada del código fuente .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda