es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo alinear verticalmente el texto e iconos de inicio / fin en un TextField.

¿Hay una forma de colocar los iconos de arrastre/avance y el texto en el mismo nivel? Por defecto, no es así como se muestra en la imagen a continuación. Intenté cambiar el parámetro fontStyle en TextField, pero sin éxito. El texto se muestra más alto que los iconos.

enter image description here

import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.Icon
import androidx.compose.material.OutlinedTextField
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowForward
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.window.singleWindowApplication

fun main() = singleWindowApplication {
    var text by remember { mutableStateOf("TEXTO") }

<pre><code>OutlinedTextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.fillMaxWidth(),
    leadingIcon = {
        Icon(contentDescription = null,
             imageVector = Icons.Default.ArrowForward)
    },
    trailingIcon = {
        Icon(contentDescription = null,
             imageVector = Icons.Default.ArrowForward)
    })
</code></pre>

}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para establecer los íconos y texto de encabezamiento/pie de página en el mismo nivel en un OutlinedTextField de Compose, se puede utilizar el parámetro visualTransformation con la transformación BaselineAligned. Esta transformación asegura que los íconos y texto estén alineados en la misma línea de base.

    Debe agregar la siguiente importación en la parte superior de su archivo:

    import androidx.compose.ui.text.input.BaselineAligned
    

    Entonces, actualice el código de su OutlinedTextField para incluir el parámetro visualTransformation de la siguiente manera:

    OutlinedTextField(
        value = text,
        onValueChange = { text = it },
        modifier = Modifier.fillMaxWidth(),
        leadingIcon = {
            Icon(contentDescription = null,
                 imageVector = Icons.Default.ArrowForward)
        },
        trailingIcon = {
            Icon(contentDescription = null,
                 imageVector = Icons.Default.ArrowForward)
        },
        visualTransformation = BaselineAligned
    )
    

    Esto debería alinear los íconos y el texto en la misma línea de base, como se muestra en la imagen a continuación.

Comments are closed.