Удалить дорожку полосы прокрутки из ScrollView в Android

104

В моем приложении для Android есть основной WebView (HTML, загруженный из локального ресурса), который я хочу использовать по всей ширине экрана и иметь возможность делать (по вертикали) прокручиваемым. Итак, я завернул WebView в ScrollView в моем XML-макете, но, что бы я ни делал, мне кажется, что я не могу удалить дорожку полосы прокрутки с правой стороны прокрутки. Хуже того, я не могу изменить цвет фона полосы прокрутки.

Дорожка занимает около 10 dp, что создает проблемы для HTML в WebView. Я бы хотел, чтобы полоса прокрутки отображалась поверх веб-представления (в стиле iPhone, если вы понимаете, о чем я). Теперь вы можете сказать: «Почему бы вам не изменить свой HTML, чтобы он был на 10 пикселей тоньше?», Что является моим запасным решением, но я бы предпочел, чтобы этого не было.

Вот соответствующий фрагмент XML-макета, вы увидите, что я пробовал все атрибуты android: etc, которые смог найти:

<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>

Я нацелен на платформу 2.1 / API lvl 7, на самом деле имею дело только с дисплеями нормального размера, mdp, hdp и xhdp.

Мик Бирн
источник

Ответы:

506

Чтобы удалить полосу прокрутки из представления (и его подкласса) через xml:

android:scrollbars="none"

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

Гарзахд
источник
1
Это не то, что задано на плакате с вопросом. Он сказал, что будетlike the scrollbar to appear on top of the web view content
Судханшу
11
Он работает, но вы не сможете прокручивать экран, когда клавиатура открыта
DeltaCap019
4
android: scrollbarThumbVertical = "@ null" Добавьте это в scrollview, если хотите, чтобы ваш экран прокручивался при открытой клавиатуре :)
Бисвас Хайярголи
29

попробуйте, это ваша деятельность onCreate:

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
источник
Спасибо ... Я уже пробовал это (в коде и в layout.xml), но этот подход по-прежнему мешал горизонтальному размеру WebView в ScrollView. Лучшим решением было то, что было предложено выше, просто полностью удалив ScrollView и позволив WebView обрабатывать саму прокрутку. Основная проблема заключалась в том, что я не понимал, когда вообще целесообразно использовать ScrollView; т.е. каждое представление в Android может обрабатывать прокрутку.
Mick Byrne
18

Я немного смущен, почему вы вообще ставите a WebViewв ScrollView. У A WebViewесть собственная встроенная система прокрутки.

Что касается вашего фактического вопроса, если вы хотите, Scrollbarчтобы он отображался сверху, вы можете использовать

view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY) or   
android:scrollbarStyle="insideOverlay"
Кристофер Сувей
источник
Да, вы правы в том, что ScrollView вообще не нужен, я сам разобрался с этим, прежде чем вернуться сюда. 'SetScrollBarStyle' в веб-представлении сработал, спасибо!
Мик Бирн
Мало того, что это не нужно, ScrollView не может содержать прокручиваемые представления, поэтому ваш WebView не будет прокручиваться в любом случае
Человек,
3
Не работает. Правильный ответ - это ответ Гарзада.
Мисаг Эмамверди
3
правильный ответ ниже, android: scrollbars = "none"
Араиб Карим
5

Решил мою проблему, добавив это в мои ListView:

android:scrollbars="none"
Сэм
источник
4

Эти решения не сработали в моем случае с относительной компоновкой и если клавиатура открыта android:scrollbars="none"и android:scrollbarStyle="insideOverlay"также не работает.

панель инструментов исчезла, моя кнопка «Готово» исчезла.

не работает

Это работает для меня

myScrollView.setVerticalScrollBarEnabled(false);
VJ Вишал Джогия
источник
2

Используя ниже, решена проблема

android:scrollbarThumbVertical="@null"
Md. Asaduzzaman
источник
Из обзора: Привет, пожалуйста, не отвечайте только исходным кодом. Постарайтесь дать хорошее описание того, как работает ваше решение. См .: Как мне написать хороший ответ? . Спасибо
sɐunıɔ ןɐ qɐp