android - samsung - el control deslizante siempre tiene el ancho predeterminado
que es tamaño de pagina en word (2)
Encontré la solución.
Está dentro de una tabla, por lo que el ancho se define por el ancho de la tabla attibut para la especificación. col y fila.
Así que la solución es bastante corta.
table.add(volumenSlider).width(600).height(60);
Y su anchura de 600 y 60.
Acaban de agregar el wiki para que sea más claro!
Los widgets de la interfaz de usuario no establecen su propio tamaño y posición. En su lugar, el widget padre establece el tamaño y la posición de cada hijo. Los widgets proporcionan un tamaño mínimo, preferido y máximo que el padre puede usar como sugerencias. A algunos widgets principales, como Tabla, se les puede dar restricciones sobre cómo dimensionar y colocar a los hijos. Para dar a un widget un tamaño específico en un diseño, el tamaño mínimo, preferido y máximo del widget se quedan solos y las restricciones de tamaño se establecen en el padre.
Espero que te ayude a solucionar algunos problemas también.
Saludos
[ACTUALIZACIÓN] ¡Noté que un invalidar () sería bueno pero no cambió nada! Así que puse toda la opción con la creación de la tabla y las etiquetas deslizantes +. El botón trasero es solo un botón de texto agregado al final de la tabla. Sé que es un código largo pero parece que me necesitan.
Creé un control deslizante como este, ya que sé que el ancho mínimo del fondo se usa para el ancho del control deslizante:
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);
}
Está dentro de una mesa sin ancho o tal. Ya eché un vistazo si el ancho es estable y si el cálculo del preflido del control deslizante toma mi 600.
Math.max(style.knob == null ? 0 : style.knob.getMinWidth(), style.background.getMinWidth())
este es el cálculo del ancho del control deslizante dentro de Sliderclass. Si calculo eso y lo registro, obtengo el 600.
Todo me parece bien, pero el control deslizante es demasiado pequeño para los 600 i set.
El fondo y las texturas son 24x24.
Así que espero que ustedes puedan decirme qué estoy haciendo mal.
speedSlider.getStyle().knob.setMinHeight(100)