关于我的应用

我有一个具有整体外观的应用程序。

对于蜂窝前设备,我只是向后移植了Holo主题的一些元素。

对于CheckBox,RadioButton,可以使用主题,样式和属性...

我想做什么

我使用ListView显示很多项目。我想在ListView上启用快速滚动,并且希望它具有整体外观。

我的问题

将快速滚动Drawable集成到我的应用主题中时,我遇到了一些困难。

到目前为止我尝试过的

  • 寻找执行此操作的库。 HoloEverywhere原为
    有希望,但不能解决这个问题。
  • 尝试自己做:

  • 我刚刚添加了这些可绘制对象:



    然后还添加了此drawable:
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@drawable/fastscroll_thumb_pressed_holo" />
        <item android:drawable="@drawable/fastscroll_thumb_default_holo" />
    </selector>
    

    在我的 attrs.xml 中添加了此代码:
    <attr name="fastScrollThumbDrawable" format="reference" />
    

    我在 themes.xml 中添加了此代码:
    <style name="MyTheme">
        <item name="fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>
    </style>
    

    此主题已在 Manifest.xml 中正确设置为我的应用程序:
    android:theme="@style/MyTheme"
    

    请记住android:fastScrollThumbDrawable doesn't exist pre-honeycomb

    希望您能帮我解决这个问题。 :)

    更新:

    几个小时前,似乎已将快速滚动支持添加到了HoloEverywhere中:



    我会检查一下。 :)

    最佳答案

    我正在使用android:fastScrollThumbDrawable,但我不知道为什么它不起作用,因此在网络上搜索时发现here是一个硬代码解决方案,我不知道它是否可以像您所需要的那样在旧API上运行,但是在我的情况下,问题已解决。注意我正在使用API​​ 18(例如目标)和带有API 17的设备进行测试。

    编码:

    try {
        Field f = AbsListView.class.getDeclaredField("mFastScroller");
        f.setAccessible(true);
        Object o = f.get(<<your listView here>>);
        f = f.getType().getDeclaredField("mThumbDrawable");
        f.setAccessible(true);
        Drawable drawable = (Drawable) f.get(o);
        drawable = getResources().getDrawable(R.drawable.<<your thumb drawable here can be a selector>>);
        f.set(o, drawable);
    } catch (Exception e) {
        e.printStackTrace();
    }
    

    关于android - Holo快速滚动查看旧设备,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14042269/

    10-10 04:56