Remover trilha da barra de rolagem de ScrollView no Android

104

Meu aplicativo Android tem um WebView principal (HTML carregado de um recurso local) que desejo usar em toda a largura da tela e ser capaz de fazer a rolagem (verticalmente). Portanto, envolvi o WebView em um ScrollView em meu layout XML, mas não importa o que eu faça, não consigo remover a trilha da barra de rolagem do lado direito da exibição de rolagem. Pior ainda, não consigo mudar a cor de fundo da trilha da barra de rolagem.

A faixa ocupa cerca de 10 dps ou mais, o que está criando problemas para o HTML no WebView. Eu gostaria que a barra de rolagem aparecesse no topo da visualização da web (estilo iPhone, se é que você me entende). Agora, você poderia dizer "por que você não muda seu HTML para 10px mais fino?", Que é minha solução alternativa, mas eu prefiro não precisar fazer isso.

Aqui está o snippet relevante do XML de layout, você verá que tentei todos os atributos android: etc que consegui encontrar:

<ScrollView 
  android:id="@+id/deal_web_view_holder"
  android:layout_below="@id/clock_bar_holder"
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent"
  android:fillViewport="false"
  android:fadingEdge="none"
  android:background="#02a7e9"
  android:scrollbars="none"
  android:scrollbarSize="0dp"
  android:paddingRight="0dp"
  android:scrollbarAlwaysDrawVerticalTrack="false"
  android:scrollbarStyle="insideOverlay"
  android:scrollbarTrackVertical="@drawable/scrollbar_track_vertical" >
    <WebView
       android:id="@+id/deal_web_view"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"/>  
</ScrollView>

Estou visando a plataforma 2.1 / API lvl 7, realmente lidando apenas com monitores de tamanho normal, mdp, hdp e xhdp.

Mick Byrne
fonte

Respostas:

506

Para remover uma barra de rolagem de uma visualização (e sua subclasse) via xml:

android:scrollbars="none"

http://developer.android.com/reference/android/view/View.html#attr_android:scrollbars

Garzahd
fonte
1
Não foi isso que o autor da pergunta perguntou. Ele disse que farialike the scrollbar to appear on top of the web view content
Sudhanshu
11
Funciona, mas você não conseguirá rolar a tela quando o teclado estiver aberto
DeltaCap019
4
android: scrollbarThumbVertical = "@ null" Adicione isto na visualização de rolagem se desejar que sua tela role quando o teclado estiver aberto :)
Biswas Khayargoli
29

experimente esta é a sua atividade emCreate:

ScrollView sView = (ScrollView)findViewById(R.id.deal_web_view_holder);
// Hide the Scollbar
sView.setVerticalScrollBarEnabled(false);
sView.setHorizontalScrollBarEnabled(false);

http://developer.android.com/reference/android/view/View.html#setVerticalScrollBarEnabled%28boolean%29

jkhouw1
fonte
Obrigado ... Eu já tentei esse (no código e no layout.xml), mas essa abordagem ainda interferia no tamanho horizontal do WebView dentro do ScrollView. A melhor solução foi a fornecida acima, apenas removendo o ScrollView por completo e permitindo que o WebView cuide da própria rolagem. O problema raiz era minha falta de compreensão de como era apropriado usar um ScrollView; ou seja, cada visualização no Android pode lidar com rolagem.
Mick Byrne
18

Estou um pouco confuso por que você está colocando um WebViewem um ScrollViewem primeiro lugar. A WebViewtem seu próprio sistema de rolagem embutido.

Em relação à sua pergunta real, se você quiser Scrollbarque apareça no topo, você pode usar

view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY) or   
android:scrollbarStyle="insideOverlay"
Christopher Souvey
fonte
Sim, você está certo sobre não precisar do ScrollView em primeiro lugar, eu resolvi isso antes de verificar novamente aqui. O 'setScrollBarStyle' na visualização da web funcionou muito bem, obrigado!
Mick Byrne
Além de não ser necessário, um ScrollView não pode conter visualizações roláveis, então seu WebView não teria rolado de qualquer maneira
A Person,
3
Não está funcionando. A resposta correta é a resposta de Garzahd.
Misagh Emamverdi
3
a resposta correta está abaixo, android: scrollbars = "none"
Araib karim
5

Resolvi meu problema adicionando isto ao meu ListView:

android:scrollbars="none"
Sam
fonte
4

Essas soluções falharam no meu caso com layout relativo e se o teclado estiver aberto android:scrollbars="none"e android:scrollbarStyle="insideOverlay" também não funcionando.

barra de ferramentas sumiu, meu botão concluído sumiu.

não está funcionando

Este está funcionando para mim

myScrollView.setVerticalScrollBarEnabled(false);
VJ Vishal Jogiya
fonte
2

Usando abaixo, resolveu o problema

android:scrollbarThumbVertical="@null"
Md. Asaduzzaman
fonte
Da avaliação: Olá, por favor, não responda apenas com o código-fonte. Tente fornecer uma boa descrição sobre como sua solução funciona. Veja: Como escrevo uma boa resposta? . Obrigado
sɐunıɔ ןɐ qɐp