Holo fast scroll взгляд на старые устройства

О моем приложении

У меня есть приложение, которое выглядит голо.

Для устройств перед сотовой разверткой я просто перенес некоторые элементы темы Holo.

Работа с темами, стилями и attrs - это нормально для CheckBox, RadioButton ...

Что я пытаюсь сделать

Я использую ListView для отображения большого количества элементов. Я хочу включить быструю прокрутку на моем ListView, и я хочу, чтобы он выглядел голо.

Моя проблема

У меня есть некоторые трудности при интеграции быстрой прокрутки Drawable it в тему моего приложения.

Что я пробовал до сих пор

  1. Ищете библиотеки, которые делают это. HoloEverywhere был многообещающим, но не справился с этим.

  2. Пытался сделать это сам:

Я просто добавил эти рисунки:

Затем также добавил этот 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 не существует предварительно соты.


Я надеюсь, что вы можете помочь мне решить это.:)

Обновить:

Похоже, поддержка быстрой прокрутки была добавлена ​​в HoloEverywhere несколько часов назад:

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

Я проверю это.:)

2 ответа

Я использую 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();
}

Изменить это:

<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>

Теперь это должно работать:)

С уважением

сафари

Другие вопросы по тегам