Libgdx Etiqueta de texto de varias líneas de altura
He hecho una pequeña prueba en LibGdx, en Multi-line Label, parece que no puedo obtener la altura de la línea envuelta. A continuación se muestra el código. Teóricamente, la altura de aLebel debe ser> bLabel. Pero el resultado aparece igual.
código:
- API de la interfaz de usuario para libgdx
- LibGDX: Crear una rejilla para el juego de mesa
- ¿Cómo obtener el idioma del teléfono con libgdx?
- ¿Cómo crear un juego de Android 2D?
- LibGDX leer archivo XML
aLabel.setText("this is a super long long long text that need wrapping."); // line wrapped into 3 lines aLabel.setWrap(true); aLabel.setWidth(470); doLog("aLabel.getHeight(): " + aLabel.getHeight()); bLabel.setText("this is short."); // unwrapped line bLabel.setWrap(true); bLabel.setWidth(470); doLog("bLabel.getHeight(): " + bLabel.getHeight());
resultado:
aLabel.getHeight(): 45.0 bLabel.getHeight(): 45.0
¿Alguien tiene alguna idea de cómo obtener la altura real de múltiples líneas en LibGdx? Gracias por adelantado.
- Los anuncios de Admob aparecen sólo después de la primera actualización
- La imagen no es un poder de 2?
- Textura de texturepacker en LibGDX
- ¿Puedo eliminar com.google.android.gms.version de AndroidManifest cuando uso gradle?
- Multiplicando un vector2 por un escalar (LibGDX)
- AppWarp se bloquea en Android, Libgdx
- Cómo configurar el modo retrato con libGDX?
- La pintura con libgdx hace que los objetos parpadeen
Tuve este problema durante años y accidentalmente lo resolvió mediante el ajuste de la anchura y el embalaje de la etiqueta dos veces. Tenga en cuenta que las etiquetas de varias líneas nunca tuvieron la intención de calcular su propio ancho, por lo que tiene que configurarlas externamente, preferiblemente de su padre.
public Label createLabel() { // Create label and set wrap Label label = new Label("Some long string here...", skin); label.setWrap(true); // Pack label label.pack(); // This might not be necessary, unless you're changing other attributes such as font scale. // Manual sizing label.setWidth(textWidth); // Set the width directly label.pack(); // Label calculates it's height here, but resets width to 0 (bug?) label.setWidth(textWidth); // Set width again return label; }
LibGDX versión utilizada: 1.6.4
Tuve el mismo problema y parece que no existe un método en la clase Label para resolver esto. También, estoy de acuerdo con usted, el método getHeight () debería devolver la altura real del Actor, así que no sé si eso es un error o hay un razonamiento detrás de ese comportamiento.
De todos modos, cómo resolví el problema es mediante el método getWrappedBounds de BitmapFont. No es corto, pero para su ejemplo sería el siguiente:
doLog("aLabel.getHeight(): " + aLabel.getStyle().font.getWrappedBounds(aLabel.getText(), aLabel.getWidth()).height);
Esto podría hacerse añadiendo una restricción a la celda que contiene la etiqueta en la tabla:
Label label = new Label("Example", new Label.LabelStyle(font, Color.WHITE)); label.setWrap(true); Table table = new Table(); table.add(label).width(WITH);
Para obtener más información acerca de cómo utilizar Tabla, vaya a: https://github.com/libgdx/libgdx/wiki/Table
Paquete de tamaños del widget a su tamaño pref, nada más. La anchura Pref de una etiqueta con envolvimiento es 0.
Label label = new Label(...); label.setWrap(true); label.setWidth(123); label.setHeight(label.getPrefHeight());
- Agregar Layout de forma programática dentro de otro
- Ejecución de una aplicación de Android en la parte superior de la pantalla de bloqueo