Из того, что я понимаю, ScrollPane может добавить к нему несколько виджетов, используя таблицу в качестве виджета ScrollPane (так оно выполняется в тестах ScrollPane в репозитории libGDX).libGDX ScrollPane с WidgetGroup вместо таблицы в качестве виджета ScrollPane?
Я хотел бы достичь чего-то подобного, но хотел бы иметь абсолютное позиционирование многих участников виджета ScrollPane, а не табличное позиционирование, которое обеспечивается с помощью таблицы в виде виджета ScrollPane.
Я закончил с этим кодом, который не работает, но в соответствии с libGDX javadoc он должен и я не знаю, почему он не работает!
stage = getStage();
// Scroll pane outer container
Container<ScrollPane> container = new Container<ScrollPane>();
container.setSize(Game.getWidth(), Game.getHeight());
// Scroll pane inner container
WidgetGroup widgetGroup = new WidgetGroup();
widgetGroup.setFillParent(true);
widgetGroup.addActor(new Image(MAP_TEXTURE_ATLAS.findRegion("map")));
// Scroll pane
ScrollPane scrollPane = new ScrollPane(widgetGroup);
container.setActor(scrollPane);
stage.addActor(container);
Ничего не отображается на экране;
Это, однако работать с ниже код (который, очевидно, не то, что я хочу, как виджет ScrollPane является контейнером, который может иметь только один актер)
// Scroll pane outer container
Container<ScrollPane> container = new Container<ScrollPane>();
container.setSize(Match3.getWidth(), Match3.getHeight());
// Scroll pane inner container
Container container2 = new Container();
container2.setBackground(new TextureRegionDrawable(MAP_TEXTURE_ATLAS.findRegion("map")));
// Scroll pane
ScrollPane scrollPane = new ScrollPane(container2);
container.setActor(scrollPane);
stage.addActor(container);
Есть ли способ использовать WidgetGroup с ScrollPane или любым способом, как я могу достичь требуемых функций.
Благодаря
АЛЬТЕРНАТИВНЫЕ РЕАЛИЗАЦИЯ ПРИНЯТЫХ ОТВЕТА
После прочтения принятого ответа, я решил создать свой собственный класс, реализация ниже;
// Scroll pane outer container
Container<ScrollPane> container = new Container<ScrollPane>();
container.setSize(Match3.getWidth(), Match3.getHeight());
class ScrollWidget extends WidgetGroup {
private float prefHeight;
private float prefWidth;
public ScrollWidget(Image image) {
prefHeight = image.getHeight();
prefWidth = image.getWidth();
addActor(image);
}
@Override
public float getPrefHeight() {
return prefHeight;
}
@Override
public float getPrefWidth() {
return prefWidth;
}
}
ScrollWidget scrollWidget = new ScrollWidget(
new Image(MAP_TEXTURE_ATLAS.findRegion("map"))
);
// Scroll pane
ScrollPane scrollPane = new ScrollPane(scrollWidget);
scrollPane.setOverscroll(false, false);
scrollPane.layout();
scrollPane.updateVisualScroll();
scrollPane.setScrollY(scrollPane.getMaxY());
container.setActor(scrollPane);
stage.addActor(container);
Спасибо, это была проблема! Я отредактировал свой вопрос, чтобы включить решение, подобное тому, как вы его решили. – GradeRetro