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:

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.

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()); 
  • ¿Cuándo usar actores en libgdx? ¿Cuáles son contras y pros?
  • Cómo cargar correctamente las texturas con libgdx assetmanager
  • Libgdx para Android muestra negro antes de la pantalla principal
  • Creando una cuerda lisa con un motor de la física del androide
  • AssetManager en LibGDX
  • LibGDX no ejecuta el método render ()
  • ¿Utilizar las librerías LibGdx con el proyecto android existente?
  • Cómo detectar el final de la acción en Libgdx (0.9.7) de android
  • La pestaña 'Leaderboard` que no se muestra en Google Play Games, mientras que la pestaña `Achievements` está allí
  • Cómo crear la pantalla de carga en libgdx?
  • Libgdx | ¿Cómo crear minimap?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.