`
寻梦者
  • 浏览: 638138 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android中listView的样式

 
阅读更多

使用ListView FastScroller,默认滑块和自定义滑块图片的样子如下两图:

设置快速滚动属性很容易,只需在布局的xml文件里设置属性即可:

     <ListView android:id="@+id/listView"

        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"

        android:fastScrollEnabled="true" 
        android:focusable="true"
 />

        但是有时候会发现设置属性无效,滚动ListView并未出现滑块。原因是该属性生效有最小记录限制。当ListView记录能够在4屏以内显示(也就是说滚动4页)就不会出现滑块。可能是api设计者认为这么少的记录不需要快速滚动。

      依据是android源代码,见FastScroller的常量声明:

        // Minimum number of pages to justify showing a fast scroll thumb 
          private static int MIN_PAGES = 4;

          以及:

        // Are there enough pages to require fast scroll? Recompute only if total count changes 
        if (mItemCount != totalItemCount && visibleItemCount > 0) { 
              mItemCount = totalItemCount; 
              mLongList = mItemCount / visibleItemCount >= MIN_PAGES; 
        }

          通篇查看了ListView及其超累AbsListView,都未找到自定义图片的设置接口。看来是没打算让开发者更改了。但是用户要求我们自定义这个图片。那只能用非常手段了。

经过分析发现,该图片是ListView超类AbsListView的一个成员mFastScroller对象的成员mThumbDrawable。这里mThumbDrawable是Drawable类型的。mFastScroller是FastScroller类型,这个类型比较麻烦,类的声明没有modifier,也就是default(package),只能供包内的类调用。

因此反射代码写的稍微麻烦一些:

        try { 
             Field f = AbsListView.class.getDeclaredField("mFastScroller"); 
            f.setAccessible(true); 
          Object o=f.get(listView); 
          f=f.getType().getDeclaredField("mThumbDrawable"); 
          f.setAccessible(true); 
          Drawable drawable=(Drawable) f.get(o); 
          drawable=getResources().getDrawable(R.drawable.icon); 
          f.set(o,drawable); 
         Toast.makeText(this, f.getType().getName(), 1000).show(); 
      } catch (Exception e) { 
           throw new RuntimeException(e); 
      }

 

分享到:
评论

相关推荐

    Android ListView边框圆角美化

    5. **ListView样式调整**:除了单个项的圆角效果,还可以通过修改ListView本身来增强整体视觉效果。例如,可以通过设置`android:listSelector`属性来自定义选中项的背景,或者通过`android:divider`和`android:...

    android多选ListView示例

    在Android开发中,ListView是一种常用的UI组件,用于展示大量数据列表。它允许用户滚动查看内容,同时提供了多种交互方式,如点击、长按等。在本示例中,我们将探讨如何实现一个支持多选功能的ListView,即"android...

    android listview 自定义样式实例

    - **BaseAdapter**:这是自定义ListView样式的核心,你需要创建一个继承自BaseAdapter的类。在这个类中,你需要实现`getCount()`(返回列表项的数量)、`getItem(int position)`(获取指定位置的数据)、`getItemId...

    android用ListView实现表格样式

    本篇将详细介绍如何在Android中利用ListView实现表格样式的界面。 首先,理解ListView的基本原理是至关重要的。ListView依赖于Adapter来提供数据,它会根据Adapter返回的数据项数量动态创建视图(View)。为了实现...

    android中ListView嵌套GridView的使用

    在Android开发中,ListView和GridView是两种常用的布局控件,它们各自有其特定的应用场景。...在实际开发中,可以根据需求调整ListView和GridView的样式、布局以及数据处理方式,以满足各种不同的设计需求。

    Android中ListView实现表格效果

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。然而,有时我们不仅需要展示单一列表,还可能需要实现类似表格的效果,比如显示多列数据。本篇文章将详细讲解如何在Android中利用ListView...

    android 修改listview的不同item字体的颜色

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。在实际应用中,我们经常需要根据需求定制ListView,比如改变不同列表项(item)的字体颜色。标题"android 修改listview的不同item字体的颜色...

    Android利用listview浏览新闻

    在Android开发中,ListView是一种非常常见且重要的组件,它用于展示大量的数据列表,例如新闻、联系人、邮件等。在本教程中,我们将深入探讨如何利用ListView来浏览新闻。ListView的优势在于它可以动态加载数据,...

    android之listview悬浮bar

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。而“悬浮bar”(Floating Bar)则是在ListView滚动时始终固定在屏幕顶部或底部的导航栏,它可以提供筛选、分组等功能,增强用户体验。这个...

    Android ListView扩展(图片+文字)

    在Android应用开发中,ListView是常用的控件,用于展示大量数据列表。本示例将深入讲解如何在ListView中实现图片和文字的结合显示,以增强用户体验。我们将使用Android Studio 3.1.4进行开发。 首先,理解ListView...

    android ListView 网格布局

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。它的网格布局模式使得数据以多列的形式展示,增强了界面的可读性和用户体验。本文将深入探讨如何在Android中实现一个基于ArrayAdapter的网格...

    android listView 改变选中行的 字体颜色和 图片

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。要改变ListView选中行的字体颜色和图片,我们需要理解ListView的工作原理,以及如何自定义其Adapter和视图。以下是一些关键知识点的详细...

    Android-滑动listview标题置顶listview吸顶效果

    要实现透明状态栏,可以在主题样式中设置`&lt;item name="android:windowTranslucentStatus"&gt;true&lt;/item&gt;`。同时,为了防止内容被状态栏遮挡,可以使用`fitsSystemWindows="true"`属性。然而,对于不同的Android版本,...

    Android中ListView的每个Item以资源文件XML形式显示数据进行布局

    在Android开发中,ListView是一种非常重要的控件,用于展示大量数据列表。它的每个Item(列表项)通常由一个布局资源文件XML定义,这样可以灵活地设计每个列表项的外观和内容。下面我们将深入探讨如何使用XML文件来...

    android ListView实现树形结构

    在Android开发中,ListView是一种常用的UI控件,用于展示大量数据列表。然而,要实现一个树形结构,即节点有层级关系的数据展示,就需要进行一些定制化的工作。本篇文章将详细探讨如何在不继承`ListActivity`而是...

    Android:ListView实现QQ列表

    在Android开发中,ListView是一种非常重要的控件,它允许我们展示大量的数据并支持滚动操作,非常适合用来构建诸如消息列表、联系人列表等场景。在这个"Android:ListView实现QQ列表"的实践中,我们将深入理解如何...

    在Android中ListView多种Item布局的实现

    在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。它可以高效地处理大量数据,因为只有当前可视的项才会被加载到内存中。在这个场景中,我们将关注如何在ListView中实现不同类型的Item布局,...

    自定义android中ListView

    在Android开发中,ListView是一种非常常用的控件,用于展示大量数据列表。自定义ListView不仅可以满足基本的显示需求,还能提供更丰富的交互体验。本篇文章将深入探讨如何在Android中实现自定义ListView,以及如何在...

    Android ListView实例代码

    在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,通常用于实现像联系人列表、消息列表等常见的用户界面。ListView通过高效的滚动性能和可复用的视图来优化内存使用,使得在有限的内存条件...

    android基于ListView实现的滚轮选择器

    在给定的标题“android基于ListView实现的滚轮选择器”中,我们可以理解到这个实现是利用了ListView这一核心组件来构建滚轮效果。下面将详细解释如何使用ListView实现滚轮选择器,以及可能遇到的关键技术和优化点。 ...

Global site tag (gtag.js) - Google Analytics