【发布时间】:2010-05-17 19:23:40
【问题描述】:
在新的官方 Twitter 应用程序中,除非用户滚动列表,否则应用程序使用的所有 ListView 中的滚动条都是隐藏的。
当您开始滚动时,会出现滚动条。当您停止时,它们会以动画形式淡出,直至完全消失。
我似乎在文档中找不到任何表明这是标准功能的内容。
这是否包含在 API 中?如果没有,有谁知道如何做到这一点?
【问题讨论】:
标签: android
在新的官方 Twitter 应用程序中,除非用户滚动列表,否则应用程序使用的所有 ListView 中的滚动条都是隐藏的。
当您开始滚动时,会出现滚动条。当您停止时,它们会以动画形式淡出,直至完全消失。
我似乎在文档中找不到任何表明这是标准功能的内容。
这是否包含在 API 中?如果没有,有谁知道如何做到这一点?
【问题讨论】:
标签: android
已确认:要么使用 android:fadeScrollbars(如果您的 API 级别为 5) 或尝试使用 setOnScrollListener 检查滚动状态并隐藏/显示栏。这个线程中有一些代码示例: how to detect Android ListView Scrolling stopped?
【讨论】:
您可以通过自定义主题和 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 属性,并且不会使滚动条消失。
【讨论】:
我还没有使用它们,但您可以尝试使用 android:scrollbarDefaultDelayBeforeFade 和 android:scrollbarFadeDuration,它们可用于所有小部件(即 View 的子类)。
【讨论】:
我按照亚历克斯的回答,它使用主题设置和代码都有效。
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
安卓 2.2
【讨论】: