Я хочу создать ScrollPane с несколькими кнопками внутри. ScrollPane должен прокручиваться вертикально.
Я сталкиваюсь с 2 проблемами, когда прокручиваю вниз: 1) Даже если я прокручиваю до максимума, последняя кнопка не отображается полностью, внизу отсутствует небольшая часть. 2) Когда я отпускаю кнопку мыши, после прокрутки вниз ScrollPane немного прокручивается назад, и последняя кнопка больше не отображается.
Я не смог найти ничего, связанного с этой проблемой в Google. Как я могу заставить ScrollPane полностью отображать последнюю кнопку при прокрутке вниз? Как я могу предотвратить прокрутку ScrollPan после отпускания кнопки мыши?
Вот ссылка на изображение, иллюстрирующее проблему. Вот код, который я использовал:
public class ShopScreen implements Screen{
final MyGdxGame game;
OrthographicCamera camera;
Stage stage;
ScrollPane scrollPane;
Table table;
Texture texture1, texture2, texture3, texture4, texture5, texture6;
ImageButton button1, button2, button3, button4, button5, button6;
public ShopScreen(final MyGdxGame gam){
game = gam;
Constants.ecran = EcranEnum.Shop;
camera = new OrthographicCamera();
camera.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
stage = new Stage();
table = new Table();
scrollPane = new ScrollPane(table);
texture1 = new Texture(Gdx.files.internal("Images/Option1.png"));
texture2 = new Texture(Gdx.files.internal("Images/Option2.png"));
texture3 = new Texture(Gdx.files.internal("Images/Option3.png"));
texture4 = new Texture(Gdx.files.internal("Images/Option4.png"));
texture5 = new Texture(Gdx.files.internal("Images/Option5.png"));
texture6 = new Texture(Gdx.files.internal("Images/Option6.png"));
button1 = new ImageButton(new Image(texture1).getDrawable());
button2 = new ImageButton(new Image(texture2).getDrawable());
button3 = new ImageButton(new Image(texture3).getDrawable());
button4 = new ImageButton(new Image(texture4).getDrawable());
button5 = new ImageButton(new Image(texture5).getDrawable());
button6 = new ImageButton(new Image(texture6).getDrawable());
table.setFillParent(true);
table.defaults().width(Gdx.graphics.getWidth()/2.5f).height(Gdx.graphics.getHeight()/(8*Gdx.graphics.getHeight()/Gdx.graphics.getWidth()));
table.add(button1).row();
table.add(button2).row();
table.add(button3).row();
table.add(button4).row();
table.add(button5).row();
table.add(button6).row();
scrollPane.setX(Gdx.graphics.getWidth()/2-scrollPane.getWidth()/2);
scrollPane.setY(Gdx.graphics.getHeight()/2-scrollPane.getHeight()/2);
button1.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
System.out.println("Test");
}
});
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0.281f, 0.602f, 0.844f, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act();
stage.draw();
}
@Override
public void resize(int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void show() {
stage.addActor(scrollPane);
Gdx.input.setInputProcessor(stage);
}
@Override
public void hide() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
Большое спасибо за Вашу помощь !