不在ListView中滚动时自动隐藏滚动条

时间:2010-05-17 19:23:40

标签: android

在新的官方Twitter应用程序中,应用程序使用的所有ListView中的滚动条都是隐藏的,除非用户滚动列表。

开始滚动时,会出现滚动条。当你停下来时,它们会以动画淡出,直到它们完全消失。

我似乎无法在文档中找到任何表明这是标准功能的内容。

这是否包含在API中?如果没有,任何人都知道如何做到这一点?

4 个答案:

答案 0 :(得分:4)

确认:要么使用android:fadeScrollbars(如果你是API等级5) 或者尝试使用setOnScrollListener检查滚动状态并隐藏/显示条形图。一些代码示例在此线程中: how to detect Android ListView Scrolling stopped?

答案 1 :(得分:4)

您可以通过自定义主题和fadeScrollbars样式属性为API级别5及更高版本的整个应用启用滚动条淡出,方法是将其添加到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属性,并且不会淡化滚动条。

答案 2 :(得分:1)

我还没有使用它们,但您可以使用android:scrollbarDefaultDelayBeforeFadeandroid:scrollbarFadeDuration,可以在所有小部件(即View的子类)上使用。

答案 3 :(得分:0)

我按照Alex的回答,它使用了主题设置和代码。

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

我确实遇到了Gallery Component的问题。虽然以下将编译正常,但它将抛出NullPointerException。我认为这与没有滚动条显示/隐藏的图库有关。

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

Android 2.2