Der Schieberegler hat immer die Standardbreite
[UPDATE] Mir ist aufgefallen, dass ein invalidate () gut wäre, aber es hat nichts geändert! Also habe ich das gesamte Optionslayout mit der Erstellung der Tabelle und den Schiebereglern + Beschriftungen eingefügt. Die Schaltfläche "Zurück" ist lediglich eine Textschaltfläche, die am Ende der Tabelle hinzugefügt wird. Ich weiß, es ist ein langer Code, aber ich scheint gebraucht zu werden.
Ich habe einen Slider wie diesen erstellt, da ich weiß, dass die minimale Breite des Hintergrunds für die Slider-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 einem Tisch ohne Breite oder so. Ich habe bereits nachgesehen, ob die Breite festgelegt ist und ob die Berechnung für die PrefWidth des Schiebereglers meinen 600er benötigt.
Math.max(style.knob == null ? 0 : style.knob.getMinWidth(), style.background.getMinWidth())
Dies ist die Berechnung für die Breite des Schiebereglers innerhalb der Sliderclass. Wenn ich das berechne und es aufzeichne, bekomme ich die 600.
Alles scheint mir in Ordnung zu sein, aber der Schieberegler ist für den 600 i sett viel zu klein.
Hintergrund und Knob-Texturen sind 24x24.
Ich hoffe, ihr könnt mir sagen, was ich falsch mache.