2013-04-29 23 views
5

Zastanawiam się ... Czy istnieje sposób na ukrycie poziomego paska przewijania za pomocą standardu GWT ScrollPane? Mam na myśli może nie używać zewnętrznych stylów CSS itp.? Czy możesz polecić bardziej optymalny sposób osiągnięcia tego efektu?GWT - ukryj poziomy pasek przewijania

... I dotycząca CSS, teraz próbowałem ustawić styl podobnego do mojego ScrollPane

.a-scroll { 
overflow-y: scroll; 
overflow-x: hidden; 
} 

... ale wydaje się, że nie działa, a poziomy pasek przewijania jest nadal widoczny: S Czy istnieje obejście?

Dzięki

+0

Czy jesteś zainteresowany * zawsze * ukrywanie poziomego paska przewijania? –

+0

@Andrea Boscolo masz rację. Chcę ukryć w poziomie, ale pokaż tylko w pionie; – user592704

+0

Podczas ustawiania tego stylu ustawiasz jego nazwę w kodzie, aby odebrać klasę CSS ".a-scroll"? –

Odpowiedz

6

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.

+0

OK, dziękuję. Wypróbuję rozwiązanie nieco później i przedstawię moje wyniki. – user592704

+0

Próbowałem tego rozwiązania. Działa dobrze :) Dziękuję – user592704

0

można ukryć paski przewijania, jeśli zawartość nie przepełnić pojemnika przy użyciu

scrollPanel.setAlwaysShowScrollBars(false);

Jeśli paski przewijania są nadal pokazując można zajrzeć do swojej zawartości.

+0

Nie, chcę mieć przepełnienie-y obsługiwane, aby przewijać je w pionie tylko – user592704

0

Prawdopodobnie trochę tanie, ale szerokość pionowego paska jest dodawana do szerokości widżetu, co oznacza, że ​​widżet nie jest już wyświetlany w pełni. Stąd widać poziomy pasek, aby można było przewijać, aby zobaczyć rzeczy ukryte za pomocą pionowego paska przewijania.

Jeśli pójdziesz

scrollPanel.setAlwaysShowScrollBars(false); 
scrollPanel.setWidth("normalwidth + 8px"); 

powinien przestać się wyświetlać.

Powiązane problemy