[MISE À JOUR] J'ai remarqué qu'un invalide() serait bon mais il n'a pas changé quelque chose! J'ai donc mis dans l'ensemble de l'option avec la création de la table et le slider + étiquettes. Le bouton de retour est juste un texte ajouté à la fin de la table. Je sais que c'est un code long mais il semble que ce soit nécessaire.
curseur a toujours la largeur par défaut
J'ai créé un curseur comme celui-ci que je sais que la largeur minimum de l'arrière-plan est utilisé pour la largeur du curseur:
public OptionScreen(MainClass game) {
super(game);
preference = new PreferencesHelper();
font = this.getDefaultFont(25);
this.table = new Table();
if (Config.DEBUG)
this.table.debug();
// add volumenlabel
LabelStyle style = new LabelStyle(font, Color.WHITE);
volumenLabel = new Label(Config.VOLUMEN_LABLE, style);
table.add(volumenLabel).colspan(2);
table.row();
// add slider
Skin skin = new Skin();
skin.add("sliderbackground",
this.game.manager.get("data/sliderbackground.png"));
skin.add("sliderknob", this.game.manager.get("data/sliderknob.png"));
SliderStyle sliderStyle = new SliderStyle();
sliderStyle.background = skin.getDrawable("sliderbackground");
sliderStyle.background.setMinWidth(600f);
sliderStyle.knob = skin.getDrawable("sliderknob");
volumenSlider = new Slider(0f, 1f, 0.1f, false, sliderStyle);
volumenSlider.setValue(preference.getVolumen()); // load current volumen
volumenSlider.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
volumeValue.setText(String.format("%.01f",
volumenSlider.getValue()));
// sett the preference
preference.setVolumen(volumenSlider.getValue());
}
});
// add volslider to stage
table.add(volumenSlider);
volumenLabel.invalidate();
// table
style = new LabelStyle(font, Color.WHITE);
// set current volumen
volumeValue = new Label(
String.format("%.01f", volumenSlider.getValue()), style);
volumenLabel.setAlignment(2);
table.add(volumeValue).width(50f);
table.row();
initBackButton();
// init table
table.setPosition(Config.VIRTUAL_VIEW_WIDTH/2,
Config.VIRTUAL_VIEW_HEIGHT/2 - Config.BLOCK_SIZE * 10);
// add a nice fadeIn to the whole table :)
table.setColor(0, 0, 0, 0f);
table.addAction(Actions.fadeIn(2f)); // alpha fade
table.addAction(Actions.moveTo(Config.VIRTUAL_VIEW_WIDTH/2,
Config.VIRTUAL_VIEW_HEIGHT/2, 2f)); // move to center of the
// screen
// add to stage
this.stage.addActor(table);
}
Il est à l'intérieur d'une table sans largeur ou tel. Je l'ai déjà pris un coup d'oeil si la largeur est SETT et si le calcul de la prefWidth du curseur ne prend mon 600.
Math.max(style.knob == null ? 0 : style.knob.getMinWidth(), style.background.getMinWidth())
c'est le calcul de la largeur du curseur à l'intérieur du Sliderclass. Si je calcule cela et le connecte, je reçois le 600.
Tout me semble bien, mais le curseur est trop petit pour les 600 i sett.
Les textures de fond et de bouton sont 24x24.
Donc j'espère que vous pouvez me dire ce que je fais mal.