【问题标题】:Custom scrollbar for listview列表视图的自定义滚动条
【发布时间】:2012-11-05 04:37:33
【问题描述】:

我的任务是为列表视图创建自定义滚动条,据我所知,您可以自定义滚动条的方式在 android 上非常有限。是否有可能达到这样的完全相同的结果:

如果是这样,你能指出一个很好的例子吗,或者至少告诉我应该研究什么?

[编辑] 同样在滚动时,我希望能够使用拇指图标。

【问题讨论】:

  • 仅供参考,ListView 本身就是可滚动的小部件。
  • 您可以为您的列表视图声明android:fastScrollEnabled="true" 以使其快速滚动。

标签: android listview scrollbar


【解决方案1】:

在活动级别,您可以指定各种属性来指定滚动条。对于给定的滚动条,您可能必须指定 scrollbarThumbVerticalscrollbarTrackVertical 属性。可定制属性列表在R.attr 中指定。

【讨论】:

  • 我试过了,但是有没有一种工作方法可以为每个拇指和轨道指定高度和宽度?
【解决方案2】:

在drawable中创建这两个xml文件

scrollbar_vertical_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient
        android:angle="0"
        android:endColor="#FF6600"
        android:startColor="#FF6600" />

    <corners android:radius="4dp"/>


</shape>

scrollbar_vertical_track.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >    
    <gradient
        android:angle="0"
        android:endColor="#FFFFFF"
        android:startColor="#FFFFFF" /> 
    <corners android:radius="4dp" />    
</shape>

在list_view.xml中使用这两个xml文件

list_view.xml

<ListView android:id="@id/android:list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:dividerHeight="1dp"
    android:divider="#FF6600"
    android:listSelector="@drawable/list_selector"
    android:layoutAnimation="@anim/listview_layout_animation"
    android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb"
    android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track"
    android:scrollbarSize="3dip"
    android:fastScrollEnabled="true">

【讨论】:

    【解决方案3】:

    在 res/styles.xml 中创建主题:

    <style name="CustomTheme" parent="android:Theme">
        <item name="android:scrollbarTrackVertical">@drawable/scroll_track</item>
        <item name="android:scrollbarThumbVertical">@drawable/scroll_thumb</item>
    </style>
    

    @drawable/scroll_track@drawable/scroll_thumb 必须引用九个补丁图像或一个形状可绘制对象。滚动轨迹图像是滚动条的背景。滚动拇指负责滚动句柄。然后只需将主题应用于整个应用程序或 AndroidManifest.xml 中的活动:

    <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/CustomTheme">
    

    你可以像我解释的那样做这个,也可以根据需要把图片放在可绘制的地方。

    【讨论】:

    • 据我所知,这与 sriramramani 答案中的解决方案相同。它不起作用,因为指定的图像被拉伸了。
    【解决方案4】:

    我刚刚在 ListView 旁边使用了单独的 Seekbar。

    【讨论】:

    • 视觉上,是的。不过,我不必实现它的功能,我的工作只是应用设计,这可能是唯一的解决方案,除了与 OpenGL 进行接口(这不是该项目的选项)或创建自定义小部件。
    • @SMGhost : 你能分享一下你是如何用一段代码创建它的吗
    • @Shruti 把listview放在左边,seekbar放在右边。就如此容易。我没有编写任何处理这些组件之间通信的代码,因此无关紧要。
    • @SMGhost :感谢您的回复,但我只是在寻找那种沟通方式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2015-02-25
    相关资源
    最近更新 更多