Автоматическое скрытие полос прокрутки при отсутствии прокрутки в ListView - PullRequest
7 голосов
/ 17 мая 2010

В новом официальном приложении Twitter полосы прокрутки во всех списках ListViews, которые использует приложение, скрыты, если пользователь не прокручивает список.

Когда вы начинаете прокрутку, появляются полосы прокрутки. Когда вы останавливаетесь, они исчезают с анимацией, пока они полностью не исчезнут.

Я не могу найти в документации ничего, что бы указывало на то, что это стандартная функция.

Это что-то включено в API? Если нет, кто-нибудь знает, как это можно сделать?

Ответы [ 4 ]

4 голосов
/ 17 мая 2010

Подтверждено: либо используйте android: fadeScrollbars (если вы уровень API 5) или попробуйте использовать setOnScrollListener для проверки состояния прокрутки и скрытия / отображения полос. Некоторые примеры кода находятся в этой теме: как определить, что Android ListView Scrolling остановлен?

4 голосов
/ 08 июня 2010

Вы можете включить замирание полосы прокрутки для всего приложения на уровне API 5 и выше с помощью специальной темы и атрибута стиля fadeScrollbars , добавив его в styles.xml:

 <style name="Theme.App" parent="android:Theme.Light">
    <item name="android:fadeScrollbars">true</item>
 </style>

Затем установите новую тему для вашего приложения в AndroidManifest.xml:

<application android:icon="@drawable/app_icon" 
             android:label="@string/app_name"
             android:description="@string/description" 
             android:theme="@style/Theme.App"> 

Просто убедитесь, что вы не перекрываете эту глобальную тему для отдельных действий.Более ранние версии Android будут безопасно игнорировать этот неизвестный атрибут XML и не исчезнут полосы прокрутки.

1 голос
/ 17 мая 2010

Я еще не использовал их, но вы можете поиграть с android:scrollbarDefaultDelayBeforeFade и android:scrollbarFadeDuration, доступными во всех виджетах (то есть подклассах View).

0 голосов
/ 04 ноября 2010

Я последовал ответу Алекса, и он работал как с настройками темы, так и с помощью кода.

GridView gridview = (GridView) findViewById(R.id.mygridView);
gridview.setScrollbarFadingEnabled(false);

Однако я столкнулся с проблемой с компонентом Галерея. Хотя следующее будет хорошо скомпилировано, оно выдаст исключение NullPointerException. Я предполагаю, что это связано с тем, что у галереи нет полос прокрутки для отображения / скрытия.

Gallery gallery = (Gallery) findViewById(R.id.myGallery);
gallery.setScrollbarFadingEnabled(false); // <-- this will throw an exception

Android 2.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...