8

关于我的应用

我有一个具有全息外观的应用程序。

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

CheckBox、RadioButton 可以使用主题、样式和属性...

我正在尝试做的事情

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

我的问题

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

到目前为止我尝试过的

  1. 寻找执行此操作的库。 HoloEverywhere很有希望,但没有处理。

  2. 尝试自己做:

我刚刚添加了那些drawable:

在此处输入图像描述 在此处输入图像描述

然后还添加了这个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 不存在 pre-honeycomb


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

更新 :

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

https://github.com/ChristopheVersieux/HoloEverywhere/commit/34561e48339bf6a3e0307d2d35fc4c5ac8409310

我会检查一下。:)

4

2 回答 2

1

我正在使用,android:fastScrollThumbDrawable但我不知道为什么它不起作用,所以在网上搜索我发现这里有一个硬代码解决方案,我不知道它是否像你需要的那样适用于旧 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();
}
于 2013-08-21T07:53:37.553 回答
0

改变这个:

<style name="MyTheme">
    <item name="fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>
</style>

对于这样的事情,您似乎在那里忘记了一个属性:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="listviewfastscrollstyle" parent="android:Theme">
    <item name="android:fastScrollTrackDrawable">@drawable/fastscroll_thumb_holo</item>
    <item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>
</style>

</resources>

现在它应该可以工作了:)

此致

苹果浏览器

于 2013-01-03T14:27:26.540 回答