[UPDATE] invalidate()がうまくいくように気付きましたが、何か変わっていませんでした!だから、私はテーブルとスライダー+ラベルの作成と全体のオプションレイアウトを入れた。バックボタンは、テーブルの最後に追加されたテキストボタンです。私はその長いコードを知っているが、私は必要と思われる。
スライダは常にデフォルトの幅を持っています
は、私は私がバックグラウンドの分幅はスライダー幅のために使用されていることを知っているように、このようなスライダーを作成しました:
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);
}
それは幅またはそのように、テーブル内のです。幅は敷石で、スライダのprefWidthのための計算は私の600
Math.max(style.knob == null ? 0 : style.knob.getMinWidth(), style.background.getMinWidth())
を取るない場合、これはSliderclass内部のスライダーの幅のための計算である場合、私はすでに見ていました。私はそれを計算し、それをログに記録すると、私は600を取得します。
すべてが私には正しいようですが、スライダは600 i settのための小さな方法です。
背景とノブのテクスチャは24x24です。
だから私はあなたが間違っていることを私に教えてくれることを願っています。