2013-04-29 30 views
5

Mi chiedo ... C'è un modo per nascondere la barra di scorrimento orizzontale con lo standard GWT ScrollPane? Intendo forse non usare stili CSS esterni ecc.? Oppure puoi consigliare un modo più ottimale per ottenere l'effetto?GWT - nascondi barra di scorrimento orizzontale

... E per quanto riguarda il CSS, in questo momento ho cercato di impostare stile come questo per il mio ScrollPane

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

... ma sembra che non funziona e barra di scorrimento orizzontale è ancora visibile: S Quindi c'è una soluzione?

Grazie

+0

Ti interessa * nascondere * sempre la barra di scorrimento orizzontale? –

+0

@Andrea Boscolo hai ragione. Voglio nascondere orizzontale ma ho solo mostrato verticale; – user592704

+0

Quando si imposta quello stile, si imposta un nome per esso nel codice in modo che raccolga la classe CSS '.a-scroll'? –

risposta

6

Per impostazione predefinita la proprietà overflow (auto) viene visualizzata come necessario per ottenere la soluzione più cross-browser. Quindi spetta al browser decidere quando visualizzare tali barre di scorrimento. Inoltre, chiamare scrollPanel.setAlwaysShowScrollBars(false) è inutile poiché è già stato chiamato in fase di costruzione (nel metodo initialize()).

In ogni caso ho trovato che quello che stai richiedendo è un known issue.

Se si vuole sempre nascondere la barra di scorrimento orizzontale è necessario impostare la proprietà overflow-x: hidden sull'elemento scorrevole del ScrollPanel (come si è tentato, ma tale pannello non è un semplice div con una overflow proprietà su di esso). Prova con:

public class MyScrollPanel extends ScrollPanel { 

    public void setAlwaysHideHorizontalScrollBar(boolean alwaysHide) { 
    getScrollableElement().getStyle().setOverflowX(alwaysHide ? Overflow.HIDDEN : Overflow.AUTO); 
    } 
    // ... and the like. 
} 

Ricorda che, se si imposta la precedenza, in alcuni browser non sarà in grado di scorrere più in senso orizzontale. Anche overflow-x/y sono proprietà CSS3, mentre overflow è CSS2. Quindi questo potrebbe non essere quello che stai cercando.

In tal caso alcuni trucchi CSS possono essere utili per nascondere la barra di scorrimento ma consentendo comunque lo scorrimento, ad esempio this.

Un'altra opzione potrebbe essere utilizzare il widget CustomScrollPanel che consente, tra le altre cose, di nascondere le barre di scorrimento fornendo una barra di scorrimento personalizzata, ad esempio, con uno stile di opacità zero (non la cosa migliore, difficile).

Ovviamente, un'altra opzione potrebbe essere quella di implementare il proprio widget basato su div (magari estendendo SimplePanel) con tutti gli stili necessari, come suggerito nel problema.

+0

OK grazie. Proverò la soluzione un po 'più tardi e segnalerò i miei risultati – user592704

+0

Ho provato questa soluzione. Funziona bene :) Grazie – user592704

0

È possibile nascondere le barre di scorrimento se il contenuto non trabocchi il contenitore utilizzando

scrollPanel.setAlwaysShowScrollBars(false);

Se le barre di scorrimento mostrano ancora si consiglia di guardare al suo sito web.

+0

No, voglio avere overflow-y supportato per farlo scorrere verticalmente solo – user592704

0

Probabilmente un po 'economico, ma la larghezza della barra verticale viene aggiunta alla larghezza del widget, il che significa che il widget non viene più visualizzato completamente. Quindi la barra orizzontale mostra in modo da poter scorrere per vedere le cose nascoste tramite la barra di scorrimento verticale.

Se si va

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

dovrebbe interrompere la visualizzazione.

Problemi correlati