2016-06-16 3 views
0

Я пытаюсь создать прокрутку, имеющую фон. Тем не менее, я хочу, чтобы фон занимал больше места в области прокрутки. Например, вот мой фон и окрашен в красный цвет, где я хочу, чтобы ScrollPane быть:Libgdx - Создание большого фона для scrollpane

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

Что вам нужно сделать, это набивать внешнюю таблицу, чтобы получить его содержимое, чтобы поместиться в области фона, который вы хотели бы. (Или вы могли бы поменять ячейку, на которую вы положили панель прокрутки.)

Если вы используете 9-патч, предназначенный для фона, для внешней таблицы будет выполнено дополнение внешней таблицы. Вы также можете указать TextureRegionDrawable на своем компьютере Json и использовать его в качестве фона. Это также позволит вам автоматически вставлять таблицу.

Вы можете легко получить контуры области текстуры с кожи с помощью skin.getDrawable(drawableName); - не нужно создавать промежуточное изображение, чтобы создать выталкиваемый из области.

Вот как вы можете создать TextureRegionDrawable с явным заполнения в формате JSON:

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"));

Смежные вопросы