Java Libgdx制作列表和滚动窗格包装文本?
我想知道,是否有任何方法可以在LibGDX中创建一个水平包装文本的滚动窗格和列表。我希望滚动窗格可以垂直滚动,但它可以包装文本,而不是水平滚动 我知道我可以通过使用禁用X方向的滚动Java Libgdx制作列表和滚动窗格包装文本?,java,android,libgdx,Java,Android,Libgdx,我想知道,是否有任何方法可以在LibGDX中创建一个水平包装文本的滚动窗格和列表。我希望滚动窗格可以垂直滚动,但它可以包装文本,而不是水平滚动 我知道我可以通过使用禁用X方向的滚动 scrollPane.setScrollingDisabled(false, true); 但是有没有办法使文本换行,这样就不会出现水平滚动,只会转到新行?您可以使用标签换行。然后将这些标签添加到滚动窗格。您可以使用标签包装文本。然后将这些标签添加到滚动窗格中。您可以通过以下方式执行: public class S
scrollPane.setScrollingDisabled(false, true);
但是有没有办法使文本换行,这样就不会出现水平滚动,只会转到新行?您可以使用标签换行。然后将这些标签添加到滚动窗格。您可以使用标签包装文本。然后将这些标签添加到滚动窗格中。您可以通过以下方式执行:
public class ScrollPaneTest extends ApplicationAdapter {
private Stage stage;
private Table container;
@Override
public void create () {
stage = new Stage();
Skin skin = new Skin(Gdx.files.internal("skin/glassy-ui.json"));
Gdx.input.setInputProcessor(stage);
container = new Table();
stage.addActor(container);
container.setFillParent(true);
Table table = new Table();
final ScrollPane scroll = new ScrollPane(table, skin);
scroll.setScrollingDisabled(true,false);
table.pad(10).defaults().expandX().space(4);
for (int i = 0; i < 100; i++) {
table.row();
Label label=new Label(i + ". Publish your games on Windows, Mac, Linux, Android, iOS, BlackBerry and HTML5, all with the same code base.", skin);
label.setAlignment(Align.center);
label.setWrap(true);
table.add(label).width(Gdx.graphics.getWidth());
}
container.add(scroll).expand().fill();
}
@Override
public void render () {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
@Override
public void resize (int width, int height) {
stage.getViewport().update(width, height, true);
}
@Override
public void dispose () {
stage.dispose();
}
}
公共类ScrollPaneTest扩展应用程序适配器{
私人舞台;
专用表容器;
@凌驾
公共void创建(){
阶段=新阶段();
皮肤=新皮肤(Gdx.files.internal(“Skin/glassy ui.json”);
Gdx.input.setInputProcessor(阶段);
容器=新表();
stage.addActor(容器);
container.setFillParent(true);
Table Table=新表();
最终滚动窗格滚动=新滚动窗格(表、皮肤);
scroll.setScrollingDisabled(真、假);
table.pad(10).defaults().expandX().space(4);
对于(int i=0;i<100;i++){
table.row();
Label Label=新标签(i+”。在Windows、Mac、Linux、Android、iOS、BlackBerry和HTML5上发布游戏,所有这些都具有相同的代码基。”,皮肤);
标签.设置对齐(对齐.中心);
label.setWrap(true);
table.add(label.width(Gdx.graphics.getWidth());
}
container.add(scroll.expand().fill();
}
@凌驾
公共无效渲染(){
Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
@凌驾
公共空心调整大小(整型宽度、整型高度){
stage.getViewport().update(宽度、高度、真值);
}
@凌驾
公共空间处置(){
stage.dispose();
}
}
输出为:
您可以这样做:
public class ScrollPaneTest extends ApplicationAdapter {
private Stage stage;
private Table container;
@Override
public void create () {
stage = new Stage();
Skin skin = new Skin(Gdx.files.internal("skin/glassy-ui.json"));
Gdx.input.setInputProcessor(stage);
container = new Table();
stage.addActor(container);
container.setFillParent(true);
Table table = new Table();
final ScrollPane scroll = new ScrollPane(table, skin);
scroll.setScrollingDisabled(true,false);
table.pad(10).defaults().expandX().space(4);
for (int i = 0; i < 100; i++) {
table.row();
Label label=new Label(i + ". Publish your games on Windows, Mac, Linux, Android, iOS, BlackBerry and HTML5, all with the same code base.", skin);
label.setAlignment(Align.center);
label.setWrap(true);
table.add(label).width(Gdx.graphics.getWidth());
}
container.add(scroll).expand().fill();
}
@Override
public void render () {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
@Override
public void resize (int width, int height) {
stage.getViewport().update(width, height, true);
}
@Override
public void dispose () {
stage.dispose();
}
}
公共类ScrollPaneTest扩展应用程序适配器{
私人舞台;
专用表容器;
@凌驾
公共void创建(){
阶段=新阶段();
皮肤=新皮肤(Gdx.files.internal(“Skin/glassy ui.json”);
Gdx.input.setInputProcessor(阶段);
容器=新表();
stage.addActor(容器);
container.setFillParent(true);
Table Table=新表();
最终滚动窗格滚动=新滚动窗格(表、皮肤);
scroll.setScrollingDisabled(真、假);
table.pad(10).defaults().expandX().space(4);
对于(int i=0;i<100;i++){
table.row();
Label Label=新标签(i+”。在Windows、Mac、Linux、Android、iOS、BlackBerry和HTML5上发布游戏,所有这些都具有相同的代码基。”,皮肤);
标签.设置对齐(对齐.中心);
label.setWrap(true);
table.add(label.width(Gdx.graphics.getWidth());
}
container.add(scroll.expand().fill();
}
@凌驾
公共无效渲染(){
Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
@凌驾
公共空心调整大小(整型宽度、整型高度){
stage.getViewport().update(宽度、高度、真值);
}
@凌驾
公共空间处置(){
stage.dispose();
}
}
输出为:
@Draz我是否可以将所有标签添加到列表中?然后转到滚动窗格。如果是这样,当我这样做并将其添加到滚动窗格时,它正在添加[Label:my text here],而之前它只是简单地执行“my text here”@Draz,那么我会通过将所有标签添加到列表中来实现这一点吗?然后转到滚动窗格。如果是这样,当我这样做并将其添加到滚动窗格时,它正在添加[Label:my text here],而之前它只是简单地执行“my text here”