[UPDATE] Ich bemerkte, dass ein invalidate() wäre gut, aber es hat nicht etwas geändert! Also lege ich das gesamte Optionslayout mit der Erstellung der Tabelle und des Sliders + Labels ein. Der Backbutton ist nur eine Texttaste am Ende der Tabelle. Ich weiß, dass es ein langer Code ist, aber ich scheint gebraucht zu werden.
Slider hat immer Standardbreite
habe ich einen Schieber wie dies, wie ich weiß, dass die min Breite des Hintergrunds für den Schieber Breite verwendet wird:
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);
}
Es ist in einer Tabelle ohne Breite oder dergleichen. Ich habe bereits einen Blick, wenn die Breite sett ist und wenn die Berechnung für die prefWidth des Schiebers meines nimmt 600.
Math.max(style.knob == null ? 0 : style.knob.getMinWidth(), style.background.getMinWidth())
dies ist die Berechnung für die Breite des Schiebers innerhalb des Sliderclass. Wenn ich das kalkuliere und es logge, bekomme ich die 600.
Alles scheint mir richtig, aber der Schieberegler ist viel zu klein für die 600 ich einstellen.
Hintergrund und Knobtextures sind 24x24.
Also ich hoffe, Sie können mir sagen, was ich falsch mache.