2015-05-21 3 views
-1

Как добавить строку вверху таблицы в LibGdx?Добавить строку в начало таблицы (LibGdx)

tableName.add(rowElement); 

Таким образом, он добавляет линию к концу таблицы (внизу). Мне нужно сделать наоборот.

tableName.add(rowElement).align(Align.top); // didn't work 

Код:

Table mainTable = new Table(); 
mainTable.center().top(); 

Table message = new Table(skin); 
Label messageName = new Label("ImYourFather", skin); 
message.add(messageName).row(); 

Label messageText= new Label("THIRD MeSSaGE", skin); 
message.add(messageText).row(); 

mainTable.add(message).align(Align.top).row(); 

enter image description here

+0

Можете ли вы разместить свой код, чтобы мы могли быстро имитировать? кажется, что вы должны использовать .jp .prepend или .before – Einlanzer

+2

@Einlanzer Это вопрос Java/LibGDX. – noone

+0

@Erick, пожалуйста, напишите более полный пример кода, который показывает, что вы делаете. Выравнивание предназначено только для содержимого ячейки. Это не связано с ячейкой в ​​таблице. – noone

ответ

3

Короткий ответ: вы не можете вставить в libgdx таблице (непосредственно)

Однако, существуют обходные пути.

Согласно libgdx documentation:

Таблица позволяет виджет клетке, чтобы быть изменены или удалены (установив его нулевое значение), но таблица в настоящее время не позволяет клеткам быть вставлены в середину или удалены , Для этого необходимо перестроить таблицу: вызовите clearChildren, чтобы удалить все дочерние элементы и ячейки, а затем снова добавить их в таблицу .

Если требуется вставить или удалить ячейки, можно использовать VerticalGroup или HorizontalGroup.

Таким образом, вы не можете вставлять ячейки в верхней части таблицы. Вам необходимо полностью перестроить таблицу с самого начала или, в качестве альтернативы, использовать класс VerticalGroup.


Первое решение: восстановить таблицу каждый раз, когда вы хотите, чтобы вставить сообщение в верхней части.


Второе решение: Использование Vertical Group

// Initialize 
VerticalGroup v = new VerticalGroup(); 
v.addActor(new Label("First row", skin)) 
v.addActor(new Label("Second Row", skin)) 
v.pack(); 
myScene.addActor(v); 

... 

// Add to the 'top' 
v.addActorAt(0, new Label("I'm at the first row", skin)); 
v.pack(); 

Я не проверял этот код, но это должно помочь вам получить его суть

Однако при этом , имейте в виду, что вы потеряете часть мощности таблицы libgdx.