Domyślnie właściwość ScrollPanel
'overflow
jest ustawiona na auto
(tj. Pasek przewijania pojawi się w razie potrzeby), aby uzyskać najbardziej rozwiązanie dla różnych przeglądarek. Tak więc od przeglądarki zależy, kiedy wyświetlić takie paski przewijania. Również wywoływanie scrollPanel.setAlwaysShowScrollBars(false)
jest bezużyteczne, ponieważ jest już wywoływane w czasie budowy (w metodzie initialize()
).
W każdym razie stwierdziłem, że to, o co prosisz, to known issue.
Jeśli chcesz zawsze ukryć pasek przewijania poziomego trzeba ustawić właściwość overflow-x: hidden
na przewijanej element ScrollPanel
(jak próbował, ale taki panel nie jest proste div z własności overflow
na nim). Wypróbuj:
public class MyScrollPanel extends ScrollPanel {
public void setAlwaysHideHorizontalScrollBar(boolean alwaysHide) {
getScrollableElement().getStyle().setOverflowX(alwaysHide ? Overflow.HIDDEN : Overflow.AUTO);
}
// ... and the like.
}
Pamiętaj, że jeśli ustawisz powyższe, w niektórych przeglądarkach nie będziesz już mógł przewijać w poziomie. Również overflow-x/y
są właściwościami CSS3, podczas gdy overflow
jest CSS2. To może nie być to, o co prosisz.
W takim przypadku niektóre sztuczki CSS mogą pomóc w ukryciu paska przewijania, ale nadal pozwalają na przewijanie, coś jak this.
Opcja Anothe może wykorzystywać widget CustomScrollPanel
, który pozwala, między innymi, ukrywać paski przewijania, oferując niestandardowy pasek przewijania z zerowym opacity style (nie najlepsze, trudne).
Oczywiście inną opcją może być rozwinięcie własnego widgetu opartego na div (może rozszerzenie SimplePanel
) ze wszystkimi potrzebnymi stylami, zgodnie z sugestią problemu.
Czy jesteś zainteresowany * zawsze * ukrywanie poziomego paska przewijania? –
@Andrea Boscolo masz rację. Chcę ukryć w poziomie, ale pokaż tylko w pionie; – user592704
Podczas ustawiania tego stylu ustawiasz jego nazwę w kodzie, aby odebrać klasę CSS ".a-scroll"? –