[업데이트] 나는 invalidate()가 좋겠지 만 뭔가 바뀌지는 않았 음을 알았습니다! 그래서 나는 테이블과 슬라이더 + 라벨의 생성과 함께 전체 optionlayout에 넣었습니다. 뒤로 버튼은 테이블 끝 부분에 추가 된 텍스트 버튼입니다. 나는 긴 코드를 알고 있지만 나는 필요할 것으로 보인다.
슬라이더에는 항상 기본 너비가 있습니다
나는 내가 배경의 최소 폭이 슬라이더 폭에 사용되는 것을 알고이 같은 슬라이더를 만들어 :
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입니다.
나는 너희들이 내가 뭘 잘못하고 있는지 말할 수 있기를 바랍니다.