Libgdx - 为scrollpane创建更大的背景

时间:2016-06-16 18:54:19

标签: java android libgdx

我正在尝试创建一个具有背景的滚动窗格。但是,我希望背景占用滚动窗格的区域以上。例如,这是我的背景,红色是我想要滚动窗格的地方:

Scrollpane

然而,当我添加按钮时,我得到以下结果: enter image description here

如何将实际的滚动窗格部分限制为一个部分(上图中以红色显示)?

这是我到目前为止所拥有的。我玩弄间距/衬垫,但没有产生任何好结果:

Skin skin = Resources.getSkin(Resources.SKIN_JSON);
container = new Table();
container.setSize(Resources.VIRTUAL_WIDTH, Resources.VIRTUAL_HEIGHT);
this.addActor(container);
Table table = new Table();
// table.debug();

final ScrollPane scroll = new ScrollPane(table, skin);
table.pad(10).defaults().expandX().space(4);
table.setSize(Resources.VIRTUAL_WIDTH, Resources.VIRTUAL_HEIGHT);

container.add(scroll).expand().fill().colspan(1);
container.row().space(10).padBottom(10);

Image background = new Image(Resources.getAtlas(Resources.SKIN_ATLAS).findRegion("main-panel-horz"));
container.setBackground(background.getDrawable());

TextButton button1 = new TextButton("Button1", skin);
table.add(button1);

table.row();
TextButton button2 = new TextButton("button2", skin);
table.add(button2);

table.row();
TextButton button3 = new TextButton("button3", skin);
table.add(button3);

table.row();
TextButton button4 = new TextButton("button4", skin);
table.add(button4);

1 个答案:

答案 0 :(得分:1)

您需要做的是填充外表以使其内容适合您想要的背景区域。 (或者您可以选择填充滚动窗格所在的单元格。)

如果你使用9-patch drawable作为背景,外表的填充将自动为你完成。您还可以在皮肤Json中指定TextureRegionDrawable并将其用作背景。这也可以让你自动填充表格。

您可以使用skin.getDrawable(drawableName);轻松地从皮肤获取纹理区域drawable - 无需创建中间图像只是为了从区域创建可绘制的。

以下是如何使用json中的显式填充创建TextureRegionDrawable:

com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable: {
    main-panel-horz-padded: { region: main-panel-horz, leftWidth: 50, rightWidth: 50, topHeight: 50, bottomHeight: 50 }
},

然后在你的代码中: container.setBackground(skin.getDrawable("main-panel-horz-padded"));